SQL:查找除指定字符之外的任何字符的第一个匹配项

时间:2018-06-15 20:30:48

标签: sql sql-server string split

所有

使用SSMS v17.2

长话短说明我在表中有15列,表中的每条记录都填写了不同的列数,其余的都为空。然后我用逗号分隔符连接列。问题是null的字段也会连接起来,留下尾随的逗号。

ARNP,ACLS Provider,BLS Provider CPR,,,,,,,,,,,,
COC,CPC,CRC,CPC-1,,,,,,,,,,,
CISSP,CCNA Security,Network +,,,,,,,,,,,,
Leadership (All levels),Education (Grades K-12),,,,,,,,,,,,,,

正如您所见,尾随逗号之前的最后一个字符可以是字母数字或特殊字符。我需要帮助删除这些训练逗号,直到第一个不是逗号的字符,如下所示。

ARNP,ACLS Provider,BLS Provider CPR
COC,CPC,CRC,CPC-1
CISSP,CCNA Security,Network +
Leadership (All levels),Education (Grades K-12)

谢谢

1 个答案:

答案 0 :(得分:0)

连接后返回正确的数据:

SELECT LEFT(@MyData, charindex(',,', @Mydata) - 1)

这可以防止尾随逗号连接:

SELECT Col1 + ',' + IsNull(Col2 + ',', '') + IsNull(Col3 + ',', '') + IsNull(Col4 + ',', '') + 
    IsNull(Col5 + ',', '') + IsNull(Col6 + ',', '') + IsNull(Col7 + ',', '') + IsNull(Col8 + ',', '') +
    IsNull(Col9 + ',', '') + IsNull(Col10 + ',', '') + IsNull(Col11 + ',', '') + 
    IsNull(Col12 + ',', '') + IsNull(Col13 + ',', '') + IsNull(Col14 + ',', '') + IsNull(Col15, '')

实际上,只有连接null返回null时,上述方法才有效。如果这一行:

SELECT 'xxx' + NULL

返回

xxx

然后我的第二个建议不起作用