Разница между + и & в выражении ssrs

Я работаю над отчетом SSRS.

У меня один вопрос, в чем разница между + а также & в ссрс-выражении?

Пожалуйста, поделитесь своим ответом с коротким примером. Благодарю.

2 ответа

Решение

На самом деле это зависит от того, как вы собираетесь их использовать.

1.) Для конкатенации

По данным MSDN:

введите описание изображения здесь

  • с помощью & а также + для конкатенации приведет к тому же поведению или выводу. Он объединяет только две строки.

Пример:

= 1 & 2

Выход: 12

= "1" + "2"

Выход: 12

2.) Для арифметических целей

По данным MSDN: введите описание изображения здесь

  • с помощью + для арифметической цели сложим два числа вместе

Пример:

= 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 */
Другие вопросы по тегам