这实际上是对这里提到的主题的后续问题: split alpha and numeric using sql 面对类似的问题,我调整@ knkarthick24(有机会说tnx!)查询我的需求几乎完美(我有“2,500”而非“2 500”)如下:
SELECT [Quantity]
,substring(replace(subsrtunit, ',', ''), PATINDEX('%[0-9.]%', replace(subsrtunit, ',', '')) + 1, len(subsrtunit)) AS unit
,LEFT(replace(subsrtnumeric, ',', ''), PATINDEX('%[^0-9.]%', replace(subsrtnumeric, ',', '') + 't') - 1) AS num
FROM (
SELECT [Quantity]
,subsrtunit = SUBSTRING([Quantity], posofchar, LEN([Quantity]))
,subsrtnumeric = SUBSTRING([Quantity], posofnumber, LEN([Quantity]))
FROM (
SELECT [Quantity]
,posofchar = PATINDEX('%[^0-9.]%', replace([Quantity], ',', ''))
,posofnumber = PATINDEX('%[0-9.]%', replace([Quantity], ',', ''))
FROM [OPI].[dbo].[MRRInvoices]
WHERE DocumentNum IS NOT NULL
) d
) t
唯一剩下的就是处理负值。
现在,我在数量字段(-1.00 GB)中获得负值的结果是单位字段中的(.00 GB)和(1.00)中的num字段。
另外,有没有人知道如何翻译"它在SSIS中的派生列? 可以" Findstring"在SSIS中取代PATINDEX?
提前谢谢大家。