sql - 如何从字符串 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
解决方案
我们也许可以在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
)
推荐阅读
- node.js - 如何从角度在 socket.emit 中添加回调(new Ack())
- electron - 即使 `nodeIntegration` 设置为 `false`,Electron 也允许在渲染器中使用 `require('path')`
- php - 解决 Laravel InvalidArgumentException: Authentication views not found
- django - 使用 django 和 drf-yasg 重用序列化程序的问题
- r - 在不同的数据帧中保持相同的 id
- python - 网页抓取数据表到excel
- python - 在没有 SASpy 和 jaydebeapi 的情况下使用 SAS
- javascript - axios 和 express 路由器没有预期错误
- javascript - 如何在 JsPDF 中添加和设置字体?
- node.js - 如何更新 package.json 中的版本