【发布时间】: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
我正在尝试提取特定列中只有数字但数字只能是 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
这个怎么样?
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]'
【讨论】:
这个怎么样?
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]%'
【讨论】: