Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:查找除指定字符外的任何字符的第一个匹配项_Sql_Sql Server_String_Split - Fatal编程技术网

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

SQL:查找除指定字符外的任何字符的第一个匹配项,sql,sql-server,string,split,Sql,Sql Server,String,Split,全部, 使用SSMSV17.2 长话短说,我在一个表中有15列,表中的每条记录填写了不同数量的列,其余为空。然后用逗号分隔符连接这些列。问题是null字段也被连接起来,留下尾随逗号 ARNP,ACLS Provider,BLS Provider CPR,,,,,,,,,,,, COC,CPC,CRC,CPC-1,,,,,,,,,,, CISSP,CCNA Security,Network +,,,,,,,,,,,, Leadership (All levels),Education (Grade

全部,

使用SSMSV17.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)

谢谢

这将在连接后返回正确的数据:

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

那么我的第二个建议不起作用了

这与SQL有什么关系?您使用的是什么SQL实现?它是否有
CONCAT_WS
?SSMS只是客户端。您正在连接的SQL Server(大概)的哪个版本?看起来您的源表根本没有正常化。双逗号解决方案是genius。这么简单。非常感谢。