Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Пустая строка превращается в пробел / 5 сообщений из 5, страница 1 из 1
18.04.2005, 20:12
    #33022039
terss2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая строка превращается в пробел
При переносе хранимых процедур, написанных для MS SQL 2000 на ASE 12.5 столкнулся с разночтением работы с "пустой" строкой.

В качестве примера можно запустить в Advantage следующий скрипт:
declare @str varchar(10)
select @str = '' -- Между кавычками НЕТ пробела
select '*' + @str + '*'

Результат:
* * -- Между звездочками ЕСТЬ пробел.

Т.е. значение @str равно пробелу, а не "пустой" строке. Проблему можно решить, заменив, например, select @str = '' на select @str = LTRIM('') , но в моем случае придется переписывать достаточно большое кол-во процедур.

Нельзя ли как нибудь "по доброму" переобучить ASE 12.5 на восприятие "пустой" строки, как "пустой" строки?
...
Рейтинг: 0 / 0
18.04.2005, 22:15
    #33022098
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая строка превращается в пробел
Насколько я знаю, нельзя.
...
Рейтинг: 0 / 0
19.04.2005, 08:39
    #33022333
DrNull
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая строка превращается в пробел
declare @str varchar(10)
select @str = null
select '*' + @str + '*'

Будет ** - без пробела.
Экстракт процедур в текстовый файл, замена в любом текстовом редакторе '' на null и последующая проливка измененного скрипта.
...
Рейтинг: 0 / 0
19.04.2005, 20:29
    #33024112
terss2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая строка превращается в пробел
От варианта select @str = null я отказался сразу. Он для моих целей подходит ещё меньше, чем select @str = LTRIM(''). Дело в том, что приложение, которое использует эти хранимые процедуры, должно работать как на ASE 12.5, так и на MS SQL 2000. А 2000-й с NULL работает несколько иначе. Тестовая последовательность (declare @str varchar(10) select @str = null select '*' + @str + '*') на выходе дала бы значение NULL. Т.е. мне пришлось бы при дальнейшей модернизации программы вести параллельно две версии хранимых процедур. Одну для ASE 12.5, другую для SQL 2000, что, мягко говоря, неудобно. И вообще, мне хотелось бы не переписывать код, а добиться именно одинакового поведения серверов по отношению к "пустой" строке. Но в любом случае, спасибо за совет.
...
Рейтинг: 0 / 0
20.04.2005, 10:04
    #33024513
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пустая строка превращается в пробел
terss2002посмотрите SET CONCAT_NULL_YIELDS_NULL в BOL и подкрутите MSSQL
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Пустая строка превращается в пробел / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]