在sql server中的逗号之间删除字符串

时间:2014-03-29 14:45:57

标签: sql-server

我知道要做部分但不是全部,我们说我的表名是REV,列名是DESCR,它有一个像

的值
R&B , Semiprivate 2 Beds , Medical/Surgical/GYN

我用

SELECT  DESCR, LEFT(DESCR, Charindex(',', DESCR)),  SUBSTRING(DESCR, CHARINDEX(',', DESCR) + 1, LEN(DESCR)) from REV
在上面的选择声明的另一栏中,我在一列和'Semiprivate 2 Beds,Medical / Surgical / GYN'中得到'R& B',但我不知道如何从第二个逗号开始接受字符串

我想要返回的是“R& B”在一列中没有逗号和“Semiprivate 2 Beds”在另一列和'Medical / Surgical / GYN'等等

基本上选择逗号之间的测试,当没有逗号时,它应该是空白

2 个答案:

答案 0 :(得分:1)

这应该有效:

SELECT 
  LEFT(DESCR, CHARINDEX(',', DESCR)-1), 
  SUBSTRING(DESCR, CHARINDEX(',', DESCR)+1, LEN(DESCR)-CHARINDEX(',', DESCR)-CHARINDEX(',',REVERSE(DESCR ))),
  RIGHT(DESCR, CHARINDEX(',', REVERSE(DESCR))-1)  
FROM REV

Sample SQL Fiddle

这将拆分字符串,但在字符串的开头和结尾留空,您可以使用LTRIMRTRIM修剪空白。

虽然可能有更好的方法来做到这一点;请参阅Aaron Bertrand撰写的文章Split strings the right way – or the next best way(安德鲁在评论中提到)。

答案 1 :(得分:1)

这应该有效:

  SELECT 
  LEFT(DESCR, CHARINDEX(',', DESCR)-1), 
  SUBSTRING(DESCR, CHARINDEX(',', DESCR)+1, CHARINDEX(',', DESCR, CHARINDEX(',', DESCR)+1) -  CHARINDEX(',', DESCR) -1 ),
  RIGHT(DESCR, CHARINDEX(',', REVERSE(DESCR))-1)
  FROM REV