2

在 SQL Server 的替换中无论如何都要忽略大小写,所以:

Declare @replaceword = 'test'

REPLACE(@var,@replaceword,'<i>' + @replaceword + '</i>')

所以如果@var'Test test'

它世界回归

'<i>Test</i> <i>test</i>'
4

2 回答 2

3

我认为你将不得不做这样的事情:

Declare @replaceword1 varchar(100)
Declare @replaceword2 varchar(100)

select @replaceword1 = 'test'
select @replaceword2 = 'Test'


select REPLACE(
    REPLACE('Test test',@replaceword1 COLLATE SQL_Latin1_General_Cp1_CS_AS,'<i>' +
    @replaceword1 + '</i>'),
    @replaceword2 COLLATE SQL_Latin1_General_Cp1_CS_AS,'<i>' + @replaceword2 + '</i>')

注意:这会强制进行区分大小写的替换:SQL_Latin1_General_Cp1_CS_AS

CS在排序规则中,名称是指区分大小写。

CI在排序规则中,名称是指不区分大小写。

有关排序规则命名的更多信息。

于 2013-09-17T21:21:51.547 回答
-1

REPLACE() 如何匹配事物取决于使用的特定排序规则。不同的排序规则可能有不同的比较规则。如果您查看 REPLACE() 文档,您会在如何指定特定排序规则的底部附近看到一个示例:

SELECT REPLACE('Das ist ein Test' COLLATE Latin1_General_BIN, 'Test', 'desk' )

我对不同的可能排序规则不够熟悉,无法知道您需要哪种排序规则,但这应该会为您指明正确的道路。

不幸的是,我怀疑这可能还不够。当您替换时,您确实会替换匹配的文本。您不会合并匹配的文本。

于 2013-09-17T21:11:19.223 回答