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

Tsql 即使存在子字符串,CHARINDEX也返回0,tsql,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 ''

我正在尝试提取列之一的子字符串

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
 //...
我得到的是所有行的空字符串。我试图只显示
$”字符的索引,但得到的结果是
0`

PT.col1
的值看起来像
法语(加拿大)$fr CA
葡萄牙语(巴西)$PT BR


我遗漏了什么吗?

您必须切换参数:

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

您必须切换参数:

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

您必须切换参数:

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

您必须切换参数:

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