Sql 列拆分到另一列

Sql 列拆分到另一列,sql,tsql,Sql,Tsql,这是输入 fld_Detail Saved dollar rate, gold volume as: 42.61, 1663.40 312000000000083: Saved as GENT'S RING, , 18K, 11.20, 0.00 312000000000083: Saved as GENT'S RING, , 18K, 11.20, 0.00 312000000000104: Saved as NECKLACE W/ CONT. PENDANT GOLD, , 14K, 8.9

这是输入

fld_Detail
Saved dollar rate, gold volume as: 42.61, 1663.40
312000000000083: Saved as GENT'S RING, , 18K, 11.20, 0.00
312000000000083: Saved as GENT'S RING, , 18K, 11.20, 0.00
312000000000104: Saved as NECKLACE W/ CONT. PENDANT GOLD, , 14K, 8.90, 0.00
312000000000064: 350
312000000000080: 340
312000000000082: 340
如何更改或拆分这组记录以实现此类输出

fld_DetailNumbers
312000000000083
312000000000104
312000000000064
312000000000080
312000000000082
简而言之,我想根据第一条记录检索“”左侧的不同数字


我不知道如何拆分整行并检索其不同的值。

您可以通过一些字符串操作来实现这一点:

select left(fld_detail, charindex(':', fld_detail) - 1) as valueToLeftOfColon
如果要将其作为数字,请将其转换为:

select cast(left(fld_detail, charindex(':', fld_detail) - 1) as decimal(18, 0))
编辑:

要仅获取数字,可以执行以下操作:

select (case when fld_detail like '%:%' and fld_detail not like '%[^0-9]%:'
             then cast(left(fld_detail, charindex(':', fld_detail) - 1) as decimal(18, 0))
        end)
. . .
where fld_detail like '%:%' and fld_detail not like '%[^0-9]%:';

可以通过一些字符串操作来实现这一点:

select left(fld_detail, charindex(':', fld_detail) - 1) as valueToLeftOfColon
如果要将其作为数字,请将其转换为:

select cast(left(fld_detail, charindex(':', fld_detail) - 1) as decimal(18, 0))
编辑:

要仅获取数字,可以执行以下操作:

select (case when fld_detail like '%:%' and fld_detail not like '%[^0-9]%:'
             then cast(left(fld_detail, charindex(':', fld_detail) - 1) as decimal(18, 0))
        end)
. . .
where fld_detail like '%:%' and fld_detail not like '%[^0-9]%:';

我想你要找的是:

select substring(fld_Detail, 1, charindex(':', fld_Detail)-1 )
where isnumeric(substring(fld_detail,1,1)) = 1

这不是很有效,但是你的数据不是很正常。

我想你要找的是:

select substring(fld_Detail, 1, charindex(':', fld_Detail)-1 )
where isnumeric(substring(fld_detail,1,1)) = 1

这不是很有效,但是你的数据不是很正常。

非常感谢,先生,但是我如何删除第一条记录包含的字符串
**节省的美元汇率,黄金数量为**
,因为我只需要数字谢谢你的大力帮助。简言之,先生,我只想检索数字,第一条记录包含冒号左边的文本我想忽略它,我想忽略任何包含冒号左边文本的记录我该怎么做?谢谢!谢谢您,先生。我收到了将数据类型varchar转换为数字的错误。@DanzaiVer。在SQL Server中将字符串强制转换为整数时,必须非常小心。特别是,正确的方法是使用
case
,这是语言中唯一保证在尝试转换之前进行测试的部分。非常感谢您,先生,但是如何删除第一条记录包含的字符串
**Saved dollar rate,gold volume as**
因为我只需要数字,非常感谢您的大力帮助。总之,先生,我只想检索数字,第一条记录的冒号左侧包含文本我想忽略它,我想忽略任何包含冒号左侧文本的记录我怎么做?谢谢!谢谢您,先生。我收到了将数据类型varchar转换为数字的错误。@DanzaiVer。在SQL Server中将字符串强制转换为整数时,必须非常小心。特别是,正确的方法是使用
case
,这是语言中唯一保证在尝试转换之前进行测试的部分。谢谢你,先生,但我只想检索数字,第一条记录包含冒号左侧的文本我想忽略它,我怎么做?谢谢!试试我刚才说的谢谢,先生,它像魔术一样有效。很抱歉,如果不是第三正常格式,我不是表格的制作者,我只是再次点击表格中的数据。非常感谢您的帮助。谢谢您,先生,但我只想检索数字,第一条记录包含冒号左侧的文本。我想忽略它。我怎么做?谢谢!试试我刚才说的谢谢,先生,它像魔术一样有效。很抱歉,如果它不是第三正常形式,我不是表格的制作者,我只是再次点击它的数据。非常感谢您的帮助。