示例: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或更高数字开头或以字母开头的结果,但我遇到了转换错误,但找不到解决方法。该列是唯一标识符。如何将其转换为可以过滤的内容?
谁能提供一些解决方案的建议?
谢谢
You need to do the comparison using strings:
convert(varchar(36), newid()) like '[89ABCDEF]%'
Run Code Online (Sandbox Code Playgroud)
您可以LIKE在此处使用SQL Server的增强功能,它具有一些基本的正则表达式支持:
SELECT *
FROM table1
WHERE Reg LIKE '[89A-Z]%';
Run Code Online (Sandbox Code Playgroud)
模式[89A-Z]%说匹配开头的8或9或任何字母。