首页 > 解决方案 > 如何从字符串 SQL 中提取数字

问题描述

有没有办法从字符串中提取数字?

在我的数据库中有一个名为的列Reference,它包含多个数字

CM|319|14163|||109|405000

有没有办法得到这样的第一个数字?

select CM|%s|... as ParentId from table

所以输出应该是319

甚至可能有多个喜欢

select CM|...|%s|... as SiblingId, CM|%s|... as ParentId from table

14163 319

标签: sqlsql-servertsql

解决方案


我们也许可以在PATINDEX这里使用子字符串操作。我们可以找到字符串中第一个数字的位置,然后取一个子字符串,直到一个位置超过第一次出现的数字,然后是管道字符。

SELECT SUBSTRING(val,
                 PATINDEX('%[0-9]%', val),
                 PATINDEX('%[0-9]|%', val) - PATINDEX('%[0-9]%', val) + 1)
FROM yourTable;

演示

数据:

WITH yourTable AS (
    SELECT 'CM|319|14163|||109|405000' AS val
)

推荐阅读