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

Rya*_*don 4 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');
Run Code Online (Sandbox Code Playgroud)

查询:

select * from Table1
WHERE left(CAST(Reg AS CHAR(36)),1) > 8
Run Code Online (Sandbox Code Playgroud)

我需要创建一个查询,以查找所有以8或更高数字开头或以字母开头的结果,但我遇到了转换错误,但找不到解决方法。该列是唯一标识符。如何将其转换为可以过滤的内容?

谁能提供一些解决方案的建议?

谢谢

Gor*_*off 8

You need to do the comparison using strings:

convert(varchar(36), newid()) like '[89ABCDEF]%' 
Run Code Online (Sandbox Code Playgroud)


Tim*_*sen 5

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

SELECT *
FROM table1
WHERE Reg LIKE '[89A-Z]%';
Run Code Online (Sandbox Code Playgroud)

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