Разница между + и & в выражении ssrs
Я работаю над отчетом SSRS.
У меня один вопрос, в чем разница между +
а также &
в ссрс-выражении?
Пожалуйста, поделитесь своим ответом с коротким примером. Благодарю.
2 ответа
На самом деле это зависит от того, как вы собираетесь их использовать.
1.) Для конкатенации
По данным MSDN:
- с помощью
&
а также+
для конкатенации приведет к тому же поведению или выводу. Он объединяет только две строки.
Пример:
= 1 & 2
Выход: 12
= "1" + "2"
Выход: 12
2.) Для арифметических целей
- с помощью
+
для арифметической цели сложим два числа вместе
Пример:
= 1 + 2 //(using two numbers)
Выход: 3
= 1 + "2" //(using a number and a number with quotes)
Выход: 3
-------------------------------------------------- ----------------------
Исключения
Теперь есть исключения, что целое число и строка перепутаны или с другими типами
Пример:
= 1 + "two"
Выход: #Error
-> это потому что они несовместимы друг с другом.
- Обходной путь - используйте функции преобразования для преобразования типа данных по умолчанию для поля в тип данных, необходимый для расчетов или для объединения текста.
Пример:
= CSTR(1) + "two"
Выход: 1two
Есть и другие дополнительные функции преобразования, которые вы можете использовать в зависимости от ваших потребностей.
Из описания операторов SSRS в Visual Studio:
+
Добавьте два числа. Также используется для объединения двух строк.
Пример:
=Fields!NumberCarsOwned.Value + 2
/* if NumberCarsOwned=10, result: 10 + 2 = 12 */
=Fields!String1.Value + Fields!String2.Value
/* if String1='curious' and String2 ='guy', result: 'curiousguy' */
="4" + 5
/* result: 9, implicit conversion of the first expression */
="a" + 5
/* error: incorrect input string format */
="a" + CStr(5)
/* result: a5 */
="a" + Str(5)
/* result: a 5, space between 'a' and '5' */
&
Создает объединение строк из двух выражений.
Пример:
=Fields!FirstName.Value & Fields!LastName.Value
/* if FirstName='curious' and LastName='guy', result: 'curiousguy' */
=4 & 5
/* it's concatenation anyway, result: 45 */
=CInt(4) & CInt(5)
/* even explicit cast to integer it's concatenation anyway, result: 45 */
Еще один полезный оператор And
(логическое / побитовое И), которое может помочь решить некоторые задачи.
Пример:
=4 And 5
/* result: 4, since 4 (100 binary) And 5 (101 binary) = 4 (100 binary) */
="4" And "5"
/* result: 4 */
="a" And "b"
/* error: incorrect input string format */