我知道要做部分但不是全部,我们说我的表名是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'等等
基本上选择逗号之间的测试,当没有逗号时,它应该是空白
答案 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
这将拆分字符串,但在字符串的开头和结尾留空,您可以使用LTRIM
和RTRIM
修剪空白。
虽然可能有更好的方法来做到这一点;请参阅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