SQL Server:更好的Column解决方案应具有固定长度的数字数据

时间:2016-09-08 10:12:47

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

我正在尝试提取仅在特定列中包含数字的行,但数字应该只是6位数或12位数。 我在尝试:

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

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

非常感谢!

2 个答案:

答案 0 :(得分: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]'

答案 1 :(得分:0)

这个怎么样?

    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]%'