【问题标题】:How to select only numeric values如何仅选择数值
【发布时间】:2012-09-21 11:13:52
【问题描述】:

表1

身份证

01
wire
02
steve
ram123
03
....

从表 1 我只想选择数值, 它不应该显示像 (ram123) 这样的字母数字值

预期输出

01
02
03
....

如何查询这个条件

【问题讨论】:

    标签: sql sql-server tsql sql-server-2000


    【解决方案1】:

    试试ISNUMERIC

    SELECT *
    FROM Table1
    WHERE ISNUMERIC([ID]) = 1
    

    SQLFiddle Demo

    【讨论】:

      【解决方案2】:
      SELECT * FROM @Table 
      WHERE Col NOT LIKE '%[^0-9]%' 
      

      【讨论】:

      • SELECT * FROM @Table WHERE Col NOT LIKE '%[^0-9.-]%'
      • 这表明不清楚“数字”是什么意思。从原始问题中的示例数据来看,它可能是纯数字(在这种情况下,原始答案是正确的),或者它可能包含其他字符,如“-”和“.”。也许这意味着微软用 ISNUMERIC 实现的东西,但我从未听说有人期望它意味着 那个 :-)。
      • 是的 GilM,我从不依赖 SQL 或 Asp Classic 中的 isNumeric 函数。
      【解决方案3】:

      只想注意 IsNumeric() 有一些限制。例如,以下所有内容都将返回 1。

      SELECT ISNUMERIC(' - ')
      SELECT ISNUMERIC(' , ')
      SELECT ISNUMERIC('$')
      SELECT ISNUMERIC('10.5e-1')
      SELECT ISNUMERIC('$12.09')
      

      因此,如果您只想选择数字,那么这样的方法可能会起作用:

      create function [dbo].[IsNumbersOnly](@strSrc as varchar(255))
      returns tinyint
      as
      begin
      
          return isnumeric(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(
              @strSrc, '\', 'x'), '-', 'x'), ',', 'x'), '+', 'x'), '$', 'x'), '.', 'x'), 'e', 'x'), 'E', 'x'),
              char(9), 'x'), char(0), 'x'))
      end
      

      【讨论】:

      • 或者只使用 WHERE ID NOT LIKE '%[^0-9]%'
      • 这也行;只是想提一下限制...谢谢!
      【解决方案4】:
       SELECT column1 FROM table where ISNUMERIC(column1) = 1
      

      【讨论】:

      • 该答案与其他答案有何不同?
      • 此查询在 Oracle 中工作
      【解决方案5】:

      您可以同时使用翻译和替换功能。先把数字翻译成0,然后用null替换,只返回null值就可以解决问题了。

      select column from table where  replace(translate(column,'0123456789','0000000000'),'0','') is null 
      

      【讨论】:

        【解决方案6】:

        我尝试了上面的代码 (ISNUMERIC()),但不知何故它在 Oracle SQL 中不起作用。
        但我找到了适用于 Oracle SQL 的有效解决方案:

        SELECT column1
        FROM Table
        WHERE regexp_like( column1, '^[[:digit:]]*$');
        

        发件人:https://community.oracle.com/thread/2394572

        【讨论】:

          猜你喜欢
          • 2019-07-06
          • 2017-02-07
          • 1970-01-01
          • 1970-01-01
          • 2022-12-21
          • 2013-02-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多