Искать текст по коду ASCII в SQL Server для ASCII 63 - PullRequest
0 голосов
/ 04 августа 2020

В моих записях таблицы есть специальный символ (многие из них)

Это этот символ ◾

Когда я пытаюсь найти записи, содержащие этот символ, я получаю все записи по какой-то причине.

Это мой запрос

SELECT TOP 100 * 
FROM X2 
where txt like N'%◾%'

Я нашел ASCII = 63

Интересно, есть ли способ поиска в тексте с кодом ASCII?

Я пробовал это, но не получил записей

SELECT TOP 100 * 
FROM X2 
where txt like N'%' + char(63) + '%'

Есть идеи, как это получить?

Я использую SQL Server 2019 (v15)

1 Ответ

3 голосов
/ 04 августа 2020

Это результат того, как SQL Сервер сравнивает Unicode, и вкратце может быть разрешено путем изменения сопоставления, например,

declare @Test table (test nvarchar(max));

insert into @Test (test)
values (N'a◾b'), ('asd');

select *
from @Test
where Test like N'%◾%' COLLATE Latin1_General_100_CI_AI;

Возвращает:

test
a◾b

Измените сопоставление для соответствия, например, CI (без учета регистра) <-> (с учетом регистра), AI (без учета акцента) <-> AS (без учета акцента).

Полное описание см. в этом сообщении .

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