【问题标题】:i want to find first integer value from varchar column我想从 varchar 列中找到第一个整数值
【发布时间】:2018-09-19 10:09:56
【问题描述】:

我在表格中有以下数据。

ID
test_SQL_01
test_SQL_02_PQR_01
test_SQL_03_055
test_SQL_04_ABC_99

我想要如下所示的输出。

ID
01
02
03
04

【问题讨论】:

  • SQL Server 2016 还是 SQL Server 2017?
  • @DavidG SQL Server 2017
  • 那你为什么还要标记 2016 年呢?

标签: sql sql-server sql-server-2016 sql-server-2017


【解决方案1】:

如果INTERGER 的值始终为 2 位,那么您可以这样做:

select substring(ID, patindex('%[0-9]%', ID), 2) as ID
from table t;

【讨论】:

    【解决方案2】:

    此方法可以处理不同长度的嵌入数字

    测试数据:

    DECLARE @t table(ID varchar(50))
    INSERT @t values
    ('1'),
    ('2abc'),
    ('a3'),
    ('test_SQL_01'),
    ('test_SQL_02_PQR_01'),
    ('test_SQL_03_055'),
    ('test_SQL_04_ABC_99')
    

    查询:

    SELECT 
      STUFF(LEFT(ID, patindex('%[0-9][^0-9]%', ID + 'x')), 1, 
        patindex('%[^0-9][0-9]%', ID), '')
    FROM @t
    

    结果:

    1
    2
    3
    01
    02
    03
    04
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      相关资源
      最近更新 更多