Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Равнить стринги  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
Как сравнить два стринга, отличие которых заключается в наличии пробелов в одном из них. Например, делаю

declare @s nvarchar(10)
set @s = '123 '

select case
when @s = ltrim(rtrim(@s))
then '='
else '!='
end

Результат получаю " = "
А как получить неравенство? Какие установки нужны или функции?
21 ноя 04, 15:06    [1123534]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить стринги  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
Простите за описку в назвнии топика!
21 ноя 04, 15:08    [1123537]     Ответить | Цитировать Сообщить модератору
 Re: Равнить стринги  [new]
Glory
Member

Откуда:
Сообщений: 104760
тип данных varchar НЕ хранит концевые пробелы
21 ноя 04, 15:11    [1123541]     Ответить | Цитировать Сообщить модератору
 Re: Равнить стринги  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
Я просто привел пример. В натуре у меня в таблице определен nvarchar(10) и пробелы хранятся. Мне как раз надо избавиться от них. Для этого придется изменить тип поля в таблице?
21 ноя 04, 15:16    [1123545]     Ответить | Цитировать Сообщить модератору
 Re: Равнить стринги  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
Такой подход корректен?

declare @s nvarchar(10)
set @s = '123 '

select case
when convert(varbinary, @s) = convert(varbinary, ltrim(rtrim(@s)))
then '='
else '!='
end
21 ноя 04, 15:42    [1123559]     Ответить | Цитировать Сообщить модератору
 Re: Равнить стринги  [new]
Glory
Member

Откуда:
Сообщений: 104760
Имхо лучше сравнивать еще длину с помощью DATALENGTH().

Только зачем сравнивать если нужно просто "избавиться от них" ?
21 ноя 04, 16:56    [1123610]     Ответить | Цитировать Сообщить модератору
 Re: Равнить стринги  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
Но для того, чтобы избавиться от них надо сначала их выявить?
Ну и вообще, чисто принципиально, если приходится сравнивать стринги nvarchar, то всегда надо помнить, что возможны ведущие или конечные пробелы и применять весь наворот функций?
21 ноя 04, 17:02    [1123619]     Ответить | Цитировать Сообщить модератору
 Re: Равнить стринги  [new]
www.fun4me.narod.ru
Member

Откуда: Moscow
Сообщений: 2406
@s + '.' = ltrim(rtrim(@s)) + '.'
21 ноя 04, 17:04    [1123621]     Ответить | Цитировать Сообщить модератору
 Re: Равнить стринги  [new]
Glory
Member

Откуда:
Сообщений: 104760
Но для того, чтобы избавиться от них надо сначала их выявить?
Зачем ?
update mytable set f1 = ltrim(rtrim(f1))
21 ноя 04, 17:05    [1123622]     Ответить | Цитировать Сообщить модератору
 Re: Равнить стринги  [new]
Rivkin Dmitry
Member

Откуда: Israel
Сообщений: 5500
Glory
Но для того, чтобы избавиться от них надо сначала их выявить?
Зачем ?
update mytable set f1 = ltrim(rtrim(f1))


Сдаюсь...

www.fun4me.narod.ru
Интересная мысль, но тогда, наверное, на все случаи жизни:
'.' + @s + '.' = '.' + ltrim(rtrim(@s)) + '.'
21 ноя 04, 17:12    [1123626]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить