获取仅为数字的记录

DFo*_*k42 3 sql-server sql-server-2005

我正在运行此查询.在大多数情况下它工作正常,但有一些记录有非数字部分,这会导致问题.我需要能够只选择整数的记录.

select distinct SUBSTRING(PAPROJNUMBER, 1, 5) AS STUDY_NUMBER
        FROM         dbo.PA01201 AS PA01201_1
        where PAPROJNUMBER>'0'
Run Code Online (Sandbox Code Playgroud)

例如,结果列表的一部分如下所示:

68145
68146
68147
7762A
99999
LABOR
Run Code Online (Sandbox Code Playgroud)

除了7762A和LABOR,我想要所有这些.如何修改where子句以有效实现?

Joe*_*lli 6

将".0e0"添加到子字符串将确保ISNUMERIC仅返回有效的整数.

select distinct SUBSTRING(PAPROJNUMBER, 1, 5) AS STUDY_NUMBER
    FROM dbo.PA01201 AS PA01201_1
    where PAPROJNUMBER>'0'
        AND ISNUMERIC(SUBSTRING(PAPROJNUMBER, 1, 5) + '.0e0') = 1
Run Code Online (Sandbox Code Playgroud)

  • +1 - 绕过"ISNUMERIC()"中意外阳性的有效方法 (2认同)