Firebird SQL:提取号码



我有一个名为" 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

这为您节省了检查12启动数字的麻烦,如果出现更多的启动数字,则可以扩展。

您也可以很容易地在此上构建4或6位数字(或其他任何可能性的可能性是)。

最新更新