示例: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或更高数字开头或以字母开头的结果,但是我遇到了转换错误,但找不到解决方法。该列是唯一标识符。如何将其转换为可以过滤的内容?
任何人都可以提出解决方案的建议吗?
谢谢
答案 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,或任何字母。