若要在SQL Server 2000/2005数据库中的表上执行区分大小写的搜索/替换,您必须使用正确的排序规则.
如何确定数据库的默认排序规则是否区分大小写,如果不是,则如何执行区分大小写的搜索/替换?
SELECT testColumn FROM testTable WHERE testColumn COLLATE Latin1_General_CS_AS = 'example' SELECT testColumn FROM testTable WHERE testColumn COLLATE Latin1_General_CS_AS = 'EXAMPLE' SELECT testColumn FROM testTable WHERE testColumn COLLATE Latin1_General_CS_AS = 'eXaMpLe'
不要假设默认排序规则区分大小写,只需每次指定区分大小写(当然使用正确的语言)
确定默认排序规则是否区分大小写,如下所示:
select charindex('RESULT', 'If the result is 0 you are in a case-sensitive collation mode')
结果为0表示您处于区分大小写的排序规则模式,8表示它不区分大小写.
如果排序规则不区分大小写,则需要在执行搜索/替换时显式声明要使用的排序规则模式.
以下是如何通过指定要使用的排序规则模式来构造UPDATE语句以执行区分大小写的搜索/替换:
update ContentTable set ContentValue = replace(ContentValue COLLATE Latin1_General_BIN, 'THECONTENT', 'TheContent') from StringResource where charindex('THECONTENT', ContentValue COLLATE Latin1_General_BIN) > 0
这将匹配和替换'THECONTENT'
,但不是'TheContent'
或'thecontent'
.