CharIndex查询它带回错误的值?

时间:2014-10-06 12:01:54

标签: sql-server

我有一个CSV文件,我已导入SQL Server中的表。我正在做charindex以获得每个逗号的位置!我在这里犯了什么错误?

    SELECT-- a.string_raw, 
    charindex(',',a.string_raw,1) string_raw_1,
    charindex(',',a.string_raw,2) string_raw_2,
    charindex(',',a.string_raw,3) string_raw_3,
    charindex(',',a.string_raw,4) string_raw_4
    FROM raw_data A

示例字符串:

,1.30pm,PW Cooper,7,11,,07/09/2014,tbc,, 

结果将回归

    string_raw_1 = 1 Correct
    string_raw_2 = 8 Correct
    String_raw_3 = 8 wrong
    String_raw_4 = 8 wrong

如果有人能给我答案那就是王牌!我觉得这个会让我看起来很傻。

1 个答案:

答案 0 :(得分:0)

我假设你正在期待像1,8,7,6这样的值,因为你正在增加startindex参数。如果您希望函数返回1,8,18,20,请参阅@Thomas Haratyk的评论。

CHARINDEX的返回值从字符串的开头开始计算,而不是从startindex位置开始计算:

                 1 2  22
1      8         8 0  34
,1.30pm,PW Cooper,7,11,,07/09/2014,tbc,