|
LIKE
|
|||
---|---|---|---|
#18+
Почему результаты разные? SELECT 1 WHERE N'🙋🏻' NOT LIKE N'[აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]' SELECT 1 WHERE N'🙋🏻' LIKE N'[^აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]' ----------- 1 (строк обработано: 1) ----------- (строк обработано: 0) Из текста выдираются слова (рекурсивно, в CTE). Начало слова — символ грузинского алфавита, конец — любой другой. Сам текст из чата Телеграмма. Ну т.е. в нем встречаются эмодзи и т.п. И вот не понимаю, почему некоторые сервер ожидаемо считает не символами грузинского алфавита, а некоторые — считает. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 14:06 |
|
LIKE
|
|||
---|---|---|---|
#18+
Smile Почему результаты разные? потому что разные условия запросов, так и должно быть по идее ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 14:14 |
|
LIKE
|
|||
---|---|---|---|
#18+
MoonRabbit, странно, тут тоже "разные" Код: sql 1. 2.
но результат один и тот же ----------- 1 (строк обработано: 1) ----------- 1 (строк обработано: 1) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 14:20 |
|
LIKE
|
|||
---|---|---|---|
#18+
Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 14:29 |
|
LIKE
|
|||
---|---|---|---|
#18+
Konst_One, SELECT 1 WHERE N'🙋🏻' NOT LIKE N'[აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]' SELECT 1 WHERE N'🙋🏻' LIKE N'[ ^ აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]' Microsoft SQL Server 2012 (SP2-GDR) (KB3194719) - 11.0.5388.0 (X64) Sep 23 2016 16:56:29 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 19042: ) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 14:36 |
|
LIKE
|
|||
---|---|---|---|
#18+
Ни одного грузина на форуме? =) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 14:43 |
|
LIKE
|
|||
---|---|---|---|
#18+
Smile MoonRabbit, странно, тут тоже "разные" Код: sql 1. 2.
но результат один и тот же ----------- 1 (строк обработано: 1) ----------- 1 (строк обработано: 1) по сути разные запросы грубо говоря первый запрос показывает результат когда условие не содержит определенный текст второй запрос показывает результат когда первая буква не содержится в наборе последующих указанных так по моему, пусть гуру подтвердят ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 14:45 |
|
LIKE
|
|||
---|---|---|---|
#18+
MoonRabbit, А так тоже разные? SELECT 1 WHERE '1' not like '[0]' SELECT 1 WHERE '1' like '[^0]' ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 14:56 |
|
LIKE
|
|||
---|---|---|---|
#18+
SELECT UNICODE(N'🙋🏻'), UNICODE(N'ა'), UNICODE(N'ჰ') ----------- ----------- ----------- 55357 4304 4336 (строк обработано: 1) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 15:05 |
|
LIKE
|
|||
---|---|---|---|
#18+
Этор с грузинскими символами вообще никак не связано - замени их на латиницу и будет то же самое. Похоже, что дело тут в том, что 🙋🏻 это не обычный символ, а "суррогатная пара". Типа как два символа подряд, которые в тексте превращаются в один. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 21:59 |
|
LIKE
|
|||
---|---|---|---|
#18+
fkthat, да, вот этот пример меня добил окончательно SELECT 1 WHERE N'🙋🏻' LIKE N'[1]' SELECT 1 WHERE N'🙋🏻' LIKE N'[^1]' погуглил уже про суррогатные пары в целом (типа про добавления цвета кожи к эмодзи и т.п. — забавно), но пока не очень понимаю, как с этим работать в применении к LIKE, и почем в общем-то во всех выше перечисленных примера сервер ведет себя именно так =( Ну и что, что суррогатная, почему она совпадает с другим символом? Причем это проявляется только там, где перечисление начинается с ^. Вот например все то же SELECT 1 WHERE N'🙋🏻' NOT LIKE N'[1]' SELECT 1 WHERE N'🙋🏻' LIKE N'[^1]' ----------- 1 (строк обработано: 1) ----------- (строк обработано: 0) Реальная строка кода такая CROSS APPLY (SELECT PATINDEX(N'%[^აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]%', SUBSTRING([str], start_pos, l - start_pos))-1 + start_pos-1 end_pos) end_pos Ну т.е. NOT LIKE меня тут не спасет. Ну или все совсем переписывать =)) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 01:04 |
|
LIKE
|
|||
---|---|---|---|
#18+
Да и потом, говорить, что SELECT 1 WHERE N'🙋🏻' NOT LIKE N'[1]' сервер обрабатывает корректно, при тех результатах, что он выдает на это SELECT 1 WHERE N'🙋🏻' LIKE N'[^1]' как-то совсем стремно ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 01:18 |
|
LIKE
|
|||
---|---|---|---|
#18+
fkthat, SELECT NCHAR(0xD83D) + NCHAR(0xDE4B) ---- 🙋 (строк обработано: 1) Ну и SELECT 1 WHERE N'🙋🏻' LIKE N'[^აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]' разумеется работать не будет, так перед лайк по сути два символа. Да, уж https://qastack.ru/dba/139551/how-do-i-set-a-sql-server-unicode-nvarchar-string-to-an-emoji-or-supplementary ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 02:16 |
|
LIKE
|
|||
---|---|---|---|
#18+
Smile, а если попробовать добавить знак процента в конец и добаить колейшен collate Latin1_General_100_BIN2 ЗЫЖ не вставляется по нормальному строка ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 09:37 |
|
LIKE
|
|||
---|---|---|---|
#18+
А можно поинтересоваться - что вообще за задача такая странная? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 10:06 |
|
LIKE
|
|||
---|---|---|---|
#18+
HandKot а если попробовать добавить знак процента в конец и добаить колейшен collate Latin1_General_100_BIN2 Вот так, похоже, и вправду работает: Код: sql 1.
Какая-то хрень тоже со вставкой. Но, все поняли, я думаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 10:08 |
|
LIKE
|
|||
---|---|---|---|
#18+
fkthat А можно поинтересоваться - что вообще за задача такая странная? Почему странная? =)) Есть чат, нужно по нему составить частотный словарь слов. Из телеги штатными средствами делаю экспорт истории чата в JSON. Фильтрую его, оставляя только строки с текстами сообщений. Далее, заливаю его в табличку, и запросом бью на слова, потом делаю группировку слов, считаю. Все работало. Пока не попались эмодзи. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 12:09 |
|
LIKE
|
|||
---|---|---|---|
#18+
Smile fkthat А можно поинтересоваться - что вообще за задача такая странная? Почему странная? =)) Есть чат, нужно по нему составить частотный словарь слов. Из телеги штатными средствами делаю экспорт истории чата в JSON. Фильтрую его, оставляя только строки с текстами сообщений. Далее, заливаю его в табличку, и запросом бью на слова, потом делаю группировку слов, считаю. Все работало. Пока не попались эмодзи. Все эти вещи делаются любым готовым FTS-движком. Зачем колеса изобретать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 12:27 |
|
LIKE
|
|||
---|---|---|---|
#18+
Вот я жду здесь 7 в end_pos, а оно 0 SELECT PATINDEX(N'%[აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]%', N'სიტყვა🙋🏻') 'start_pos', PATINDEX(N'%[^აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]%', N'სიტყვა🙋🏻') 'end_pos' start_pos end_pos ----------- ----------- 1 0 на ум пока приходит считать концом слова любой символ, код которого не входит в диапазон ა-ჰ. Код, конечно, можно переписать, но хочется разобраться с LIKE/PATINDEX ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 12:30 |
|
LIKE
|
|||
---|---|---|---|
#18+
Smile Вот я жду здесь 7 в end_pos, а оно 0 SELECT PATINDEX(N'%[აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]%', N'სიტყვა🙋🏻') 'start_pos', PATINDEX(N'%[^აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ]%', N'სიტყვა🙋🏻') 'end_pos' start_pos end_pos ----------- ----------- 1 0 Код: sql 1. 2. 3.
1 7 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 12:44 |
|
LIKE
|
|||
---|---|---|---|
#18+
Smile Ни одного грузина на форуме? =) Тут таджыки Манижы нужны, с мифической фиографией, как на Евровидение ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 13:14 |
|
LIKE
|
|||
---|---|---|---|
#18+
Smile MoonRabbit, А так тоже разные? SELECT 1 WHERE '1' not like '[0]' SELECT 1 WHERE '1' like '[^0]' не уверен что msd sql с регулярками работает [^0] ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2021, 13:29 |
|
|
start [/forum/topic.php?fid=46&msg=40053914&tid=1684946]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 180ms |
0 / 0 |