Trim SQL 上的一个角色

Trim a character on SQL

大家好,这是我第一次问问题。

我的数据库中有多个带有数字和“/”的代码,例如:

510325205
510325205/000/01
510565025-01
510565025-01/090/03
...

我需要 trim / - 我需要这些结果:

510325205
510325205
510565025-01
510565025-01
...

我已经搜索并尝试过这个

left(code, charindex('/', code))

并且它适用于其中包含/的代码,但是没有/的代码被排除在结果之外。

感谢您的帮助!

您的尝试非常接近。 您只需添加 -1。

可以看到left()函数的解释:

The LEFT() function extracts a number of characters from a string (starting from left): LEFT(string, number_of_chars)

使用 charindex() 函数,您已经告诉 left() 函数要占用多少个字符。通过添加 -1 你已经删除了'/'符号,因为你已经告诉 LEFT() 函数取 10 个字符而不是 11(例如)因为第 11 个字符是'/'。

select left('510325205/000/01',charindex('/','510325205/000/01')-1)

或者因为您有名为代码的列

select left(code,charindex('/',code)-1)

如果你的值没有 / 你可以使用这个:

select case when charindex('/',code_c)-1  = -1
            then 
            code_c
            else
            left(code_c,charindex('/',code_c)-1) 
            end RESULT
from test

select left(code_c,iif(charindex('/',code_c)-1 = -1, len(code_c), charindex('/',code_c)-1)) 
from test

Here is DEMO