Запрос для поиска результатов, начинающихся с числа или выше - SQL Server - PullRequest
4 голосов
/ 14 мая 2019

Пример: http://sqlfiddle.com/#!18/7f3df/2

CREATE TABLE Table1 (
Reg uniqueidentifier
);

INSERT INTO Table1 (Reg)
Values
('DF215E10-8BD4-4401-B2DC-99BB03135F2E'),
('93015E10-8BD4-4401-B2DC-99BB03135F2E'),
('21215E10-8BD4-4401-B2DC-99BB03135F2E');

Запрос:

select * from Table1
WHERE left(CAST(Reg AS CHAR(36)),1) > 8

Мне нужно создать запрос, который находит все результаты, которые начинаются с цифры 8 или выше или начинаются с буквы, но я получаю ошибку преобразования, для которой не могу найти исправление. Столбец является уникальным идентификатором. Как я могу привести это к чему-то, что я могу отфильтровать?

Может кто-нибудь дать совет по решению этой проблемы?

Спасибо

Ответы [ 2 ]

8 голосов
/ 14 мая 2019

Для сравнения необходимо использовать строки:

convert(varchar(36), newid()) like '[89ABCDEF]%' 
5 голосов
/ 14 мая 2019

Здесь вы можете использовать расширенный LIKE SQL Server, который имеет некоторую базовую поддержку регулярных выражений:

SELECT *
FROM table1
WHERE Reg LIKE '[89A-Z]%';

Шаблон [89A-Z]% говорит, что соответствует начальным 8 или 9 или любой букве.

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