查询以数字或更高数字开头的结果-SQL Server

时间:2019-05-14 10:25:57

标签: sql sql-server

示例: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 个答案:

答案 0 :(得分:8)

您需要使用字符串进行比较:

convert(varchar(36), newid()) like '[89ABCDEF]%' 

答案 1 :(得分:5)

您可以在此处使用SQL Server的增强型LIKE,它具有一些基本的正则表达式支持:

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

模式[89A-Z]%说匹配开头的8或9,或任何字母。