SQL查询非字母名称字段

LCJ*_*LCJ 1 .net sql t-sql sql-server plsql

我在employee表中有一个Name列.我希望看到所有员工姓名都有字母以外的字符.对此最好的查询是什么?

另一个要求:返回所有甚至没有单个字母的名称.

注意:在这种情况下,任何其他英文字母都不被视为字母.在我的场景中,'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,'é ü')
Run Code Online (Sandbox Code Playgroud)

Aproach 1和Approach 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]%'
Run Code Online (Sandbox Code Playgroud)

谢谢

Lijo

gbn*_*gbn 5

您需要使用LIKE但使用COLLATE(对于SQL Server)忽略重音

WHERE
   EmployeeName COLLATE Latin1_General_CI_AI LIKE '%[^a-z]%
Run Code Online (Sandbox Code Playgroud)

"AndréMüller"是一个有效的名字但是"假",因为é或ü都不在az范围内