如果字符串中存在特定字符,SQL应该去掉最后一个字符。

6

我有一个包含不同 ID 的列。

abc_1234
abc_2345
bcd_3456/
cde_4567/

我想要一个新的列,如果存在/,则去掉它。

abc_1234
abc_2345
bcd_3456
cde_4567

我知道我将使用IF/THEN、LEFTLEN的组合,但我不知道语法。希望得到帮助!谢谢!


3
哪种数据库管理系统?根据不同的产品,字符串处理可能会有所不同。 - jarlh
1
如果在结尾加上“//”会怎么样? - jarlh
4个回答

7

(如果您正在使用SQL Server RDBMS)

您可以尝试以下rightleft的组合:

case when right(col, 1) = '/' then left(col, len(col)-1) else col end

SQLFiddle

(如果您正在使用MySQL RDBMS)

trim(trailing '/' from col);

SQLFiddle


1
将以下与编程有关的内容从英语翻译成中文。仅返回翻译文本:这将不考虑是否存在多个“/”。 - Nate S.

2
如果你正在使用SQL Server,可以尝试以下方法:
SELECT REPLACE(col,'/','')

Replace (Transact-SQL)


0

针对SQLServer

declare @tbl table
(
    c1 nvarchar(9)
)
insert into @tbl values ('abc_1234')
insert into @tbl values ('abc_2345')
insert into @tbl values ('abc_3456/')
insert into @tbl values ('abc_4567/')

select  IIF(RIGHT(c1, 1) = '/', LEFT(C1, LEN(C1)-1), C1)
from    @tbl

结果
abc_1234
abc_2345
abc_3456
abc_4567


0

通常您只需修剪字符串:

  • Oracle:select rtrim(col, '/') from ...
  • MySQL 和 PostgreSQL:select trim(trailing '/' from col) from ...

但并非所有的 DBMS 都提供此功能。例如,SQL Server 就没有。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接