一尘不染

SQL Server 2005使用CHARINDEX()拆分字符串

sql

如何根据’-‘字符分割以下字符串?

所以如果我有这个字符串: LD-23DSP-1430

我如何将其拆分为这样的单独列:

LD        23DSP       1430

另外,如果我需要(没有’-‘),是否可以将每个字符分成一个单独的字段?我正在尝试找到一种用北约字母替换每个字母的方法。

因此,这将是.....利马三角洲23三角洲塞拉帕帕14-30 ....在一个领域中。

我知道我可以像这样得到左侧:

LEFT(@item, CHARINDEX('-', @item) - 1)

阅读 209

收藏
2021-03-17

共1个答案

一尘不染

我不会确切地说这是容易的还是显而易见的,但是只要使用两个连字符,您就可以反转字符串,而且也不太难:

with t as (select 'LD-23DSP-1430' as val)
select t.*,
       LEFT(val, charindex('-', val) - 1),
   SUBSTRING(val, charindex('-', val)+1, len(val) - CHARINDEX('-', reverse(val)) - charindex('-', val)),
       REVERSE(LEFT(reverse(val), charindex('-', reverse(val)) - 1))
from t;

除此之外,您可能想要使用它split()

2021-03-17