我有一个这样的选择语句:

SELECT ColumnA,
CASE ColumnB = 'England' THEN ...

在THEN语句之后的部分中,我想从ColumnC中获取数字,

例如ColumnC值= ABC 123 DEF,我需要使用“123”部分。

有没有人知道当“123”将始终位于字符串中仅两个空格之间时,我可以在选择范围内使用的sql代码吗? (MS SQL)

最佳答案

主键是您需要使用ColumnC LIKE '% % %',以便当数据不包含两个空格时它不会失败。

如果您的电话号码长度少于20个字符,则可以使用它

SELECT ColumnA,
CASE WHEN ColumnB = 'England' AND ColumnC LIKE '% % %' THEN
   RTRIM(LEFT(REPLACE(STUFF(columnc, 1, PatIndex('% %', columnc), ''), ' ', REPLICATE(' ', 20)),20))
ELSE ....

或者你可以用这个
SELECT ColumnA,
CASE WHEN ColumnB = 'England' AND ColumnC LIKE '% % %' THEN
    SUBSTRING(
        SUBSTRING(
            ColumnC,
            1,
            CHARINDEX(' ',ColumnC,CHARINDEX(' ', ColumnC)+1)-1),
        1+CHARINDEX(' ', ColumnC),
        LEN(ColumnC))
ELSE ....

10-04 10:29