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
您需要使用LIKE但使用COLLATE(对于SQL Server)忽略重音
WHERE
EmployeeName COLLATE Latin1_General_CI_AI LIKE '%[^a-z]%
Run Code Online (Sandbox Code Playgroud)
"AndréMüller"是一个有效的名字但是"假",因为é或ü都不在az范围内
| 归档时间: |
|
| 查看次数: |
3232 次 |
| 最近记录: |