SQL Server 2005 LENfunction странность - PullRequest
1 голос
/ 18 февраля 2009

следующий код:

if (right(@eqlist,2) = ', ')
  set @eqlist = left(@eqlist,len(@eqlist)-2)

дает другие результаты (с теми же данными) на моем производственном сервере, чем на моем сервере разработки.

Проблема в том, что функция LEN 'должна' обрезать завершающие пробелы перед вычислением длины строки, но на моем сервере разработки это, похоже, не выполняется.

На моем сервере разработки он работает нормально и удаляет завершающий символ ',' из строки, но на рабочем сервере он удаляет дополнительный символ. Очевидно, что изменение «-2» на «-1» устраняет проблему для рабочего сервера, но затем - для сервера разработки.

Я переписал код так, чтобы он работал согласованно на обоих серверах, но я все же хотел бы знать, почему функция LEN ведет себя по-разному на каждом сервере.

Переписанный код:

if (right(@eqlist,2) = ', ')
  set @eqlist = left(rtrim(@eqlist),len(rtrim(@eqlist))-1)

Ответы [ 2 ]

1 голос
/ 18 февраля 2009

Проверяли ли вы значение ANSI_PADDING, когда создавались ваши таблицы? Без полной информации о вашей проблеме я не могу сказать наверняка, но если вы собираетесь использовать таблицу с столбцами VARCHAR, это может привести к тому, что она будет работать по-другому.

0 голосов
/ 18 февраля 2009

Проверьте наборы символов и параметры сортировки на двух ваших серверах, в базах данных и таблицах. Различия могут привести к тому, что один будет обрезан, а другой нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...