替换 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】:

您可以使用LEFTRIGHTCASE 的组合。 您需要使用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 server2008 字符串的替换

如何删除 SQL Server 2008 R2 数据库中的最后 N 条记录? [复制]

如何在 sql server 2008 的 exec 语句中使用替换

sql server 字符串替换 1992-2008 '-'替换为@

Microsoft SQL Server Management Studio 2008 查找和替换仅通过打开的查询进行搜索

基于 SQL server 2008 中的属性从大型数据库创建视图