【发布时间】:2015-05-14 19:00:55
【问题描述】:
如何只替换字符串的最后一个字符:
select REPLACE('this is the news with a þ', 'þ', '__')
我得到的结果是:
__is is __e news wi__ a __
编辑
服务器和数据库的排序规则是Latin1_General_CI_AS
我正在运行的实际查询是REPLACE(note, 'þ', ''),其中note 是ntext 列。关键是要去掉刺字符,因为该字符稍后会在该过程中用作列分隔符。 (请不要建议更改分隔符,考虑到它的使用程度,这不会发生!)
我尝试使用 N 前缀,甚至使用 test select 语句,结果如下:
【问题讨论】:
-
我在 MS SQL 上运行了这个查询,结果为
this is the news with a __ -
尝试选择 REPLACE(N'this is the news with a þ', 'þ', '__') -- 这不是答案,它只适用于 cmets
-
1) 您没有使用 Unicode,因为您没有在任何这些字符串前面加上大写
N。 2)你的数据库默认排序规则是什么? 3)如果您运行以下命令,您将得到问题中显示的结果:SELECT REPLACE(N'this is the news with a þ', N'þ', N'__'); -
这取决于您当前数据库的排序规则 - 当我尝试它时,我得到
this is the news with a __
标签: sql sql-server tsql unicode collation