Sql server CharIndex查询是否返回错误的值?

Sql server CharIndex查询是否返回错误的值?,sql-server,Sql Server,我有一个CSV文件,已导入SQL Server中的表中。我在做Acharindex来得到每个逗号上的位置!我在这里犯了什么错误 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(

我有一个CSV文件,已导入SQL Server中的表中。我在做Acharindex来得到每个逗号上的位置!我在这里犯了什么错误

    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、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,

您的字符串是什么?第三个参数是起始位置,而不是发生时间,下午1:30,PW Cooper,7,11,07/09/2014,待定,SQL Server的字符串处理设施非常差。您可能需要考虑一些简单的文本操作,使字符串类似XML,例如,替换、添加适当的开始和结束部分到字符串上,然后转换为XML——然后,您可以编写XPath表达式来提取所需的组件。@ TuckRollworthy,欢迎您。如果我的回答或是其他任何问题帮助你,请考虑接受它。