【问题标题】:How to pull integers from the middle of SQL query results如何从 SQL 查询结果中间拉取整数
【发布时间】:2018-10-22 05:02:30
【问题描述】:

我有一个 SQL 表,返回结果如下:

XY_4_**505543**_1227_1499547620

我试图只拉粗体。 我尝试将replace('XY_4_','')len() 与-16 混合使用。但我认为我正在接近这个错误。

我希望使用类似以下的内容,但替换不允许使用通配符:

select replace(replace(column, 'XY_4_','')'_%%%%_%%%%%%%%%%','') from table

【问题讨论】:

  • 您的预期结果是什么?是4 还是4_505543_1227_1499547620
  • 您需要查看正则表达式替换。您想使用通配符,替换不允许它们
  • @mtr.web 我正在尝试拔出“505543”
  • @cramopy 现在研究正则表达式
  • @Gjack,你的结果总是有相同的格式吗?

标签: sql replace trim


【解决方案1】:

由于您想要的输出字符串总是从第 6 个字符开始,总共包含 6 个字符,您可以使用 SUBSTRING 函数来获得想要的结果。

SELECT SUBSTRING(column, 6, 6) FROM table;

第一个参数是列名,第二个是起始索引(从 1 开始),最后一个参数是要检索的字符数。

【讨论】:

  • 谢谢!这行得通。我还在整理如何通过正则表达式来做到这一点,因为将来它可能会改变长度。
【解决方案2】:

这应该会有所帮助 -

SELECT
    REGEXP_SUBSTR('XY_4_**505543**_1227_1499547620','\**([0-9]*)\*',1,1,NULL,1) AS VAL
FROM
    DUAL;

输出 -

"VAL"
"505543"

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多