0

我有一个庞大的姓名数据库,我希望能识别出不正确的大小写。现在我正在使用以下...

SELECT *
  FROM myTable
 WHERE LastName LIKE '%Mcd%'  COLLATE SQL_Latin1_General_Cp1_CS_AS

现在当然这是低效的,因为我必须针对不同的情况一遍又一遍地运行/编辑它。我的想法是找到一个可能提供问题的名称案例列表,然后执行 LIKE IN ('case1','case2','case3','case4', ...)

如果可能的话。还有另一种我没有想到的方法吗?

我认为我必须检查的其他情况是缩写 (%.%)、连字符 (%-%) 和撇号 (%'%)。

4

1 回答 1

1

你可以使用

SELECT *
  FROM myTable
 WHERE LastName LIKE '%Mcd%' or LastName LIKE '%Foo%' 

或者

WITH T(Word) AS
(
SELECT 'Mcd' UNION ALL
SELECT 'Foo'
)

SELECT *
FROM myTable
JOIN T ON LastName LIKE '%' + Word + '%' 

避免需要myTable多次扫描。

为避免多次处理字符串,您可以使用 CLR 和正则表达式。

于 2011-10-11T15:54:56.207 回答