gpt4 book ai didi

sql - 在 SQL Server 中使用分隔符拆分列

转载 作者:搜寻专家 更新时间:2023-10-30 22:34:24 25 4
gpt4 key购买 nike

这是存储在此列中的示例数据行

'88922774 8785075 9417025' 

我试图用 ' ' 分隔符返回所有 3 个单独的数字。在某些情况下也可能有第 4 列。

通常为了分割字符串我会使用下面的

PARSENAME(REPLACE([ColumnName], ' ', '.'), 1) 
PARSENAME(REPLACE([ColumnName], ' ', '.'), 2)
PARSENAME(REPLACE([ColumnName], ' ', '.'), 3)
PARSENAME(REPLACE([ColumnName], ' ', '.'), 4)

然而,这并没有为这个特定的表返回任何数据,我不明白为什么会这样。因为如果我执行以下示例,我会看到预期的结果:

Select 
PARSENAME(REPLACE('A Test Name', ' ', '.'), 1),
PARSENAME(REPLACE('A Test Name', ' ', '.'), 2),
PARSENAME(REPLACE('A Test Name', ' ', '.'), 3)

我曾尝试使用 substring() 代替,但我只能返回字符串中的第一项和第二项,而不能返回第三项。

如有帮助,我们将不胜感激。

我的预期输出是这样的:rextester.com/ACFL85345

但是我实际看到的是 NULL 值。我正在使用 SQL Server 2005。

最佳答案

使用 CHARINDEX 查找分隔符(此处为 ' ')的索引,并借助 SUBSTRING 函数可以在 SQL Server 中拆分字符串。

DECLARE @val VARCHAR(50)='88922774 8785075 9417025' 

select 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))

关于sql - 在 SQL Server 中使用分隔符拆分列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39167447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com