替换 SQL Server 2008 中的最后一个字符
Posted
技术标签:
【中文标题】替换 SQL Server 2008 中的最后一个字符【英文标题】:Replace Last character in SQL Server 2008 【发布时间】:2014-10-30 07:10:38 【问题描述】:我正在使用 SQL Server 2008,遇到了关于字符替换的问题。
如果我使用
SELECT REPLACE(MYWORD,0,1) FROM MYTABLE
它将所有 0 替换为 1,我只想替换 Last character Like MYWORD = "ERMN0"
所以它将是 MYWORD = "ERMN1"
【问题讨论】:
【参考方案1】:使用STUFF
,IMO 最终可读性最强:
DECLARE @MyWORD VARCHAR(20) = 'ABCDEF123'
SELECT STUFF(@MyWORD, LEN(@MyWORD), 1, '2')
输出:
ABCDEF122
【讨论】:
【参考方案2】:试试这个。
SELECT LEFT('ERMN0', Len('ERMN0')-1)
+ Replace(RIGHT('ERMN0', 1), 0, 1)
输出:ERMN1
你的情况
SELECT LEFT(MYWORD, Len(MYWORD)-1)
+ Replace(RIGHT(MYWORD, 1), 0, 1) as [REPLACED] FROM MYTABLE
【讨论】:
【参考方案3】:您可以使用LEFT
、RIGHT
和CASE
的组合。
您需要使用CASE
来检查最多的RIGHT
字符是否为0
,并将其替换为1
。最后,将其与MYWORD
字符串的LEFT
部分(与最后一个字符分开后)结合起来。
但是,根据您的要求,它可能有一个缺点。
当有一个以10
结尾的单词时,它也会被替换。
SELECT LEFT(MYWORD,LEN(MYWORD)-1) + CASE RIGHT(MYWORD,1) WHEN '0' THEN '1' ELSE RIGHT(MYWORD,1) END
【讨论】:
【参考方案4】:试试这个
SELECT SUBSTRING(MYWORD, 1, LEN(MYWORD) - 1) +
REPLACE(SUBSTRING(MYWORD, LEN(MYWORD), LEN(MYWORD)), 0, 1) FROM MYTABLE
【讨论】:
【参考方案5】:这会起作用
SELECT LEFT ('ERMN0' , Len('ERMN0') -1 ) + REPLACE(Right('ERMN0', 1), '0','1')
或者在你的情况下
SELECT LEFT (MYWORD , Len(MYWORD) -1 ) + REPLACE(Right(MYWORD, 1), '0','1') AS MYWORD FROM MYTABLE
【讨论】:
【参考方案6】:这也是用full来替换结尾的字母
它用于替换结尾 1,2 或 N 的字符
Declare @Name nvarchar(20) = 'Bollywood'
select @Name = REPLACE(@Name, SUBSTRING(@Name, len(@Name) - 1, 2), 'as')
SELECT @Name
输出是“Bollywoas”
这里最好的部分是您可以根据需要替换任意数量的字符。【讨论】:
以上是关于替换 SQL Server 2008 中的最后一个字符的主要内容,如果未能解决你的问题,请参考以下文章
如何删除 SQL Server 2008 R2 数据库中的最后 N 条记录? [复制]
如何在 sql server 2008 的 exec 语句中使用替换
sql server 字符串替换 1992-2008 '-'替换为@
Microsoft SQL Server Management Studio 2008 查找和替换仅通过打开的查询进行搜索