【发布时间】:2011-08-24 09:33:48
【问题描述】:
我在员工表中有一个名称列。我想查看所有具有字母以外字符的员工姓名。对此最好的查询是什么?
另一个要求:返回所有没有一个字母的名字。
注意:在这种情况下,任何其他英文字母都不被视为字母。在我的场景中,文本“André Müller”有一些非字母字符。
DECLARE @Employee TABLE (EmpID INT, EmpName VARCHAR(1000))
INSERT INTO @Employee (EmpID, EmpName) VALUES(1,'André Müller')
INSERT INTO @Employee (EmpID, EmpName) VALUES(2,'Lijo')
INSERT INTO @Employee (EmpID, EmpName) VALUES(3,'88')
INSERT INTO @Employee (EmpID, EmpName) VALUES(4,'--@#')
INSERT INTO @Employee (EmpID, EmpName) VALUES(5,'é ü')
方法 1 和方法 2 都有效(感谢发布答案的人)。 哪个更好,为什么?
--Aproach 1
SELECT * FROM @Employee WHERE EmpName COLLATE Latin1_General_CI_AS LIKE '%[^a-z]%'
--Approach 2
SELECT * FROM @Employee WHERE EmpName LIKE '%[^a-zA-Z]%'
谢谢
李乔
【问题讨论】:
-
定义“字母”。不清楚您是否希望
ü等被视为字母。 -
感谢您帮助澄清问题。字母在上面定义。
标签: sql .net sql-server tsql