即使子字符串存在,CHARINDEX也返回0

时间:2014-05-28 17:23:31

标签: tsql

我试图提取其中一个列的子字符串。

SELECT PT.col1 AS MyColumn
    ,(
        CASE WHEN CHARINDEX(PT.col1, '$') > 0
             THEN SUBSTRING(PT.col1, CHARINDEX(PT.col1, '$') + 1, 
                  LEN(PT.col1) - CHARINDEX(PT.col1, '$') - 1)
             ELSE ''
        END 
     )
,T1.col2
,PT.col3
,T1.col4
,T1.col5
 //...

我得到的所有行都是空字符串。我试过只显示$' character but I'm getting 0的索引。

PT.col1的值似乎是French (Canada)$fr-CAPortuguese (Brazil)$pt-BR,...

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

您必须切换参数:

SELECT CHARINDEX('a$bc', '$') AS Wrong, CHARINDEX('$', 'a$bc') AS Ok
/*
Wrong       Ok
----------- -----------
0           2
*/