在 SQL Server 的替换中无论如何都要忽略大小写,所以:
Declare @replaceword = 'test'
REPLACE(@var,@replaceword,'<i>' + @replaceword + '</i>')
所以如果@var
是'Test test'
它世界回归
'<i>Test</i> <i>test</i>'
在 SQL Server 的替换中无论如何都要忽略大小写,所以:
Declare @replaceword = 'test'
REPLACE(@var,@replaceword,'<i>' + @replaceword + '</i>')
所以如果@var
是'Test test'
它世界回归
'<i>Test</i> <i>test</i>'
我认为你将不得不做这样的事情:
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
在排序规则中,名称是指不区分大小写。
有关排序规则命名的更多信息。
REPLACE() 如何匹配事物取决于使用的特定排序规则。不同的排序规则可能有不同的比较规则。如果您查看 REPLACE() 文档,您会在如何指定特定排序规则的底部附近看到一个示例:
SELECT REPLACE('Das ist ein Test' COLLATE Latin1_General_BIN, 'Test', 'desk' )
我对不同的可能排序规则不够熟悉,无法知道您需要哪种排序规则,但这应该会为您指明正确的道路。
不幸的是,我怀疑这可能还不够。当您替换时,您确实会替换匹配的文本。您不会合并匹配的文本。