勘定结果我试图从包含了像在SQL Server 2012
101-1*S5-04004PC0
13-4*1.01.11
我想在两个单独的列来获取这些值值的列PRODUCT_ID
,通过*
分隔提取数据。有人可以帮忙吗?
select PRODUCT_ID
from TABLE1;
我也有这样一些数据,这样101-1 * S5-04004PC0 * 123(意指有两个分隔符),但我只是想,当它找到的第一个左起查询分开吧*。
勘定结果我试图从包含了像在SQL Server 2012
101-1*S5-04004PC0
13-4*1.01.11
我想在两个单独的列来获取这些值值的列PRODUCT_ID
,通过*
分隔提取数据。有人可以帮忙吗?
select PRODUCT_ID
from TABLE1;
我也有这样一些数据,这样101-1 * S5-04004PC0 * 123(意指有两个分隔符),但我只是想,当它找到的第一个左起查询分开吧*。
可以使用CHARINDEX()
,SUBSTRING()
和REVERSE
做到这一点:
SELECT SUBSTRING(Product_id, charindex('*', product_id) + 1) as Col1,
SUBSTRING(REVERESE(Product_id), charindex('*', product_id) + 1) as Col2
FROM TABLE1
只需使用'charindex'找到字符串'*'位置,然后用'substring' –
提取部分字符串一旦你分开这些值你应该考虑让他们这样。我知道有时候我们会遗留传统代码,但是将多个值填充到单个元组中,就像这样违反了1NF,并且使用起来非常痛苦。如果可能的话修改你的桌子,所以不必一直这样做。 :) –