我有一个名为" Joborder"的字段。现场信息示例是:
S15195,CE15195,W16292W01,SW16292W01.1
是否有SQL语句提取数字?在99.99%的时间内,数字将为5位数字。(如果更容易,那就说它总是5位数字)。5位数字序列可以从1或2
开始以下案例语句检查字符串中的第二个字符是否为1,第三个字符是1 Works
Case substring(ordernumber FROM 2 FOR 1)
when '1' then substring(ordernumber FROM 2 for 5)
when '2' then substring(ordernumber FROM 2 for 5)
else substring(ordernumber from 3 for 5)
End As PROJECTNUMBER
有人知道更好的方法吗?
另一个选项是使用 SIMILAR TO
:
CASE WHEN SUBSTRING(ordernumber FROM 2 FOR 5) SIMILAR TO '[0-9]+'
THEN SUBSTRING(ordernumber FROM 2 FOR 5)
ELSE SUBSTRING(ordernumber FROM 3 FOR 5)
END as PROJECTNUMBER
这为您节省了检查1
或2
启动数字的麻烦,如果出现更多的启动数字,则可以扩展。
您也可以很容易地在此上构建4或6位数字(或其他任何可能性的可能性是)。