我有这个问题,我试图开始工作,可以从字符串中提取十进制数,这样它们就是自己的列。目标是然后比较它们的顺序值,所以它们也需要转换为十进制(虽然获取字符串中的数字是主要问题)
我使用的示例是字符串" OrdRevenuePay 3200.00 - > 2836.07,OrdRate 3200.00 - > 2836.07"
我需要将该字符串中的每个数字作为自己的列。到目前为止我能够选择第一个值,但第二个值也是返回其他部分。这是我到目前为止一直在使用的查询:
DECLARE @str VARCHAR(128)
SET @str = 'OrdRevenuePay 3200.00 -> 2836.07, OrdRate 3200.00 -> 2836.07'
SELECT SUBSTRING(@str,CHARINDEX(' ',@str)+1,CHARINDEX('->',@str)-CHARINDEX(' ',@str)-1) as col1
, SUBSTRING(@str,CHARINDEX('->',@str,1)+2,LEN(@str)-CHARINDEX(', OrdRate',@str,1)-1) as col2
答案 0 :(得分:0)
DECLARE @str VARCHAR(128)
SET @str = 'OrdRevenuePay 3200.00 -> 2836.07, OrdRate 3200.00 -> 2836.07'
; WITH ReplaceX
AS (
SELECT REPLACE(REPLACE(LEFT(@str,CHARINDEX(',',@str)-1),' -> ','`'),' ','~') + '|' +
REPLACE(REPLACE(RIGHT(@str,LEN(@str) - CHARINDEX(',',@str) - 1),' -> ','}'),' ','{') + '^' AS NewString
)
SELECT SUBSTRING(NewString,CHARINDEX('~',NewString)+1,CHARINDEX('`',NewString)-CHARINDEX('~',NewString)-1),
SUBSTRING(NewString,CHARINDEX('`',NewString)+1,CHARINDEX('|',NewString)-CHARINDEX('`',NewString)-1),
SUBSTRING(NewString,CHARINDEX('{',NewString)+1,CHARINDEX('}',NewString)-CHARINDEX('{',NewString)-1),
SUBSTRING(NewString,CHARINDEX('}',NewString)+1,CHARINDEX('^',NewString)-CHARINDEX('}',NewString)-1)
FROM ReplaceX