|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
Народ, подскажите пожалуйста как сделать чтобы условие не выполнялось. Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2012, 14:27 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
sp_eedo, имеется ввиду слева от равно пробел или 2 пробела справа пустая строка Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2012, 14:30 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
что за бред? что конкретно то нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2012, 14:35 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
sp_eedo, при сравнении пробелы справа игнорируются. приводите к binary или дополнительно сравнивайте datalength() этих строк ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2012, 14:36 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
sp_eedo, Как вариант можно использовать ASCII ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2012, 19:13 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2012, 20:02 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
if QUOTENAME(' ') = '' begin print 'x' end ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 10:44 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
Виталий Гонтовойif QUOTENAME(' ') = '' begin print 'x' endА справа почему QUOTENAME нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 10:49 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
да. недописал. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 11:04 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
iap Код: sql 1. 2. 3.
а почему ('' LIKE ' ') = false, a (' ' LIKE '') = true? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 11:25 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
для тупыха почему ('' LIKE ' ') = false, a (' ' LIKE '') = true?Потому что LIKE не коммутативный оператор. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 11:41 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
invmLIKE не коммутативный оператор IN кстати тоже Здравствуйте коллега. для тупых , по определению: <строка поиска> LIKE < шаблон поиска> Если шаблон поиска присутствует то True, иначе False. В пустой строке нет пробелов, пустая строка есть в любой (не нулевой) строке. Кстати понятие NULL в чистом ввиде здесь обламывается. KO ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 12:06 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
Mnior, ну вот взяли и все разжевали, не оставили человеку возможности почитать про куммутативность и подумать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 12:16 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
не, тупые в курсе про коммутативность, у них даже 5 по алгебре. тупые юзали LIKE неск. лет, но только сегодня поняли, что думали наоборот о том, что во что включается. т.е, меня вдруг переклинило вот так: 'абракадабра' like 'а%'? да. кто куда включен? 'абракадабра' включена во множество, определяемое шаблоном 'а%'. и таки да, пустая строка включена в любую, ну так значит должно быть наоборот: '' like ' ' проверяю. как бы не так. срабатывает обратное, как написал iap . вот тут и начался маразм. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 12:25 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
для тупых, слева - где ищем справа - что ищем '' like ' ' (в пустой строке ищем пробел) не должно срабатывать, а ' ' like '' - должно ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 12:28 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
для тупыхне, тупые в курсе про коммутативность, у них даже 5 по алгебре. тупые юзали LIKE неск. лет, но только сегодня поняли, что думали наоборот о том, что во что включается. т.е, меня вдруг переклинило вот так: 'абракадабра' like 'а%'? да. кто куда включен? 'абракадабра' включена во множество, определяемое шаблоном 'а%'. и таки да, пустая строка включена в любую, ну так значит должно быть наоборот: '' like ' ' проверяю. как бы не так. срабатывает обратное, как написал iap . вот тут и начался маразм.Если хвостовые пробелы в шаблоне LIKE, то они никуда не деваются при сравнении. А перед сравнением оператором "=" - отбрасываются. Причём с этим бесполезно бороться. Уже столько тем про это на форуме было... Как мило шутит Microsoft, "By design"! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 12:33 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
Shakill, вот да, в терминологии кого и где ищем мне понятно. а со включением переклинило. спасибо разъясняющим для тупых! iap, про сравнение с отбрасыванием - это же одни из первых грабель, невозможно не наступить, про like с пробелами даже никогда в голову не приходило, т.к. правильно работает. убило именно осмысление LIKE на этом примере ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 12:41 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
> В пустой строке нет пробелов, пустая строка есть в любой (не нулевой) строке. ненене! поиск пустой строки в строке - это шаблон '%%', а не ''. а то, что для varchar не учитываются концевые пробелы в строке, для которой проверяется шаблон, это надо просто запомнить. для Nvarchar, кстати, учитываются. Код: sql 1. 2.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 12:58 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
dawдля Nvarchar, кстати, учитываются. ничего себе. итого имеем: Код: sql 1. 2. 3. 4.
не могу сформулировать принцип действия :( ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 13:07 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
iapКак мило шутит Microsoft, "By design"! Ха, у МС хотябы пустая строка не эквивалента NULL, в отличии от некоторых, не будем показывать пальцем, субд ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 13:09 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
Shakilldawдля Nvarchar, кстати, учитываются. ничего себе. итого имеем: Код: sql 1. 2. 3. 4.
не могу сформулировать принцип действия :( неявное преобразование чтоли.... но вообще-то нварчар работает так же как и варчар Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 13:14 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
ошибся, этож лайки а не =.... да хм.... фича !! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 13:16 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
Ivan DurakiapКак мило шутит Microsoft, "By design"! Ха, у МС хотябы пустая строка не эквивалента NULL, в отличии от некоторых, не будем показывать пальцем, субд зато если результаты запроса сохранять как csv, NULL записывается не пустым местом, а строкой 'NULL'. очень мило, когда нарываешься в первый раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 13:19 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
> не могу сформулировать принцип действия :( для сравнения с помощью = концевые пробелы не учитываются никогда. в BOL можно найти здесь http://msdn.microsoft.com/en-us/library/ms191529(v=sql.105).aspx BOLTrailing blanks are ignored in comparisons; for example, these are equivalent: но, собственно, это и требование стандарта (сформулировано несколько иначе, но результат тот же): <comparison predicate> If the length in characters of X is not equal to the length in characters of Y, then the shorter string is effectively replaced, for the purposes of comparison, with a copy of itself that has been extended to the length of the longer string by concatenation on the right of one or more pad characters, where the pad character is chosen based on CS. If CS has the NO PAD characteristic, then the pad character is an implementation-dependent character different from any character in the character set of X and Y that collates less than any string under CS. Otherwise, the pad character is a <space>. для like расписано в статье про like. http://msdn.microsoft.com/en-us/library/ms179859.aspx BOLWhen you perform string comparisons by using LIKE, all characters in the pattern string are significant. This includes leading or trailing spaces. If a comparison in a query is to return all rows with a string LIKE 'abc ' (abc followed by a single space), a row in which the value of that column is abc (abc without a space) is not returned. However, trailing blanks, in the expression to which the pattern is matched, are ignored. If a comparison in a query is to return all rows with the string LIKE 'abc' (abc without a space), all rows that start with abc and have zero or more trailing blanks are returned. .... LIKE supports ASCII pattern matching and Unicode pattern matching. When all arguments (match_expression, pattern, and escape_character, if present) are ASCII character data types, ASCII pattern matching is performed. If any one of the arguments are of Unicode data type, all arguments are converted to Unicode and Unicode pattern matching is performed. When you use Unicode data (nchar or nvarchar data types) with LIKE, trailing blanks are significant; however, for non-Unicode data, trailing blanks are not significant. Unicode LIKE is compatible with the ISO standard. ASCII LIKE is compatible with earlier versions of SQL Server. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 13:36 |
|
пробел равен пустой строке
|
|||
---|---|---|---|
#18+
dawWhen you use Unicode data (nchar or nvarchar data types) with LIKE, trailing blanks are significant; however, for non-Unicode data, trailing blanks are not significant. Unicode LIKE is compatible with the ISO standard. ASCII LIKE is compatible with earlier versions of SQL Server. вот этот абзац не заметил, его и достаточно. просто придется запомнить ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2012, 13:43 |
|
|
start [/forum/topic.php?fid=46&tid=1711713]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 540ms |
0 / 0 |