【问题标题】:SQL Server: Better Solution for Column should have fixed length numeric dataSQL Server:更好的列解决方案应该有固定长度的数字数据
【发布时间】:2016-09-08 10:12:46
【问题描述】:

我正在尝试提取特定列中只有数字但数字只能是 6 位或 12 位的行。 我正在尝试:

select * from table where column like '[0-9][0-9][0-9][0-9][0-9][0-9]'

它有效,但对我来说似乎有点不干净。 请看看是否有人可以提供更好的解决方案。

非常感谢!

【问题讨论】:

    标签: sql sql-server-2008 sql-server-2008-r2


    【解决方案1】:

    这个怎么样?

    where len(column) in (6, 12) and
          column not like '%[^0-9]%'
    

    第一个条件检查长度是 6 还是 12。第二个条件检查所有字符都是数字。

    我应该注意到,这几乎同样清楚:

    where column like '[0-9][0-9][0-9][0-9][0-9][0-9]' or
          column like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    

    【讨论】:

      【解决方案2】:

      这个怎么样?

          DECLARE @Table TABLE
      (
          number bigint
      
      )
      
      INSERT INTO @Table
              ( number )
      VALUES  ( 3456157 ), (251236), (785412), (251236475821), (36546)
      
      --Select All rows
      SELECT *
      FROM @Table
      
      --Just the ones we want
      SELECT *
      FROM @Table
      WHERE
          LEN(number) IN (6, 12)
      AND
          number LIKE '%[0-9]%'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        • 2017-11-30
        • 1970-01-01
        • 2015-02-04
        相关资源
        最近更新 更多