我有一个这样的选择语句:
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 ....