0

我在 SQL 中有一个表,里面有 13 位数字组成的数字。

我想编写一个查询,选择最后7 位相同的所有数字

例如 :

其中:

2547041010012
2547042003000
2547041111111
2547042011100
2547040000000

选择这些:

2547040000000
2547041111111

我该如何编写这个查询?我使用SUBSTRING(mo,7,7)吗?

其中 SUBSTRING(mo,7,7) = ??

任何帮助,将不胜感激

4

3 回答 3

6
WHERE LEN (REPLACE(RIGHT(mo,7), RIGHT(mo,1), '') ) = 0

或者

WHERE RIGHT(mo,7) NOT LIKE '%[^' + RIGHT(mo,1) + ']%'

或者

WHERE mo LIKE '%' + REPLICATE (RIGHT(mo,1), 7)

我更喜欢第三种解决方案。

于 2013-11-13T09:44:15.937 回答
0
select column_with_number
from table_with_column
where right(column_with_number,7) in (
    '0000000',
    '1111111',
    '2222222',
    '3333333',
    '4444444',
    '5555555',
    '6666666',
    '7777777',
    '8888888',
    '9999999'
)
于 2013-11-13T09:59:30.243 回答
0

您还可以定义您的数字列表,然后加入反对...(但@GriGrimsolution更干净:)) - 我只是将其添加为备用,以防这是一次性查询并且可能更快(取决于您的查询执行计划)。

DECLARE @nums TABLE (num BIGINT)
DECLARE @allowednums TABLE (num BIGINT)
INSERT INTO @nums
        ( num ) VALUES ( 2547041010012 )
        INSERT INTO @nums
        ( num ) VALUES ( 2547042003000 )
        INSERT INTO @nums
        ( num ) VALUES ( 2547041111111 )
        INSERT INTO @nums
        ( num ) VALUES ( 2547042011100 )
        INSERT INTO @nums
        ( num ) VALUES ( 2547040000000 )

INSERT INTO @allowednums
        ( num ) VALUES ( 0000000 )
        INSERT INTO @allowednums
        ( num ) VALUES ( 1111111 )
        INSERT INTO @allowednums
        ( num ) VALUES ( 2222222 )
        INSERT INTO @allowednums
        ( num ) VALUES ( 3333333 )
        INSERT INTO @allowednums
        ( num ) VALUES ( 4444444 )
        INSERT INTO @allowednums
        ( num ) VALUES ( 5555555 )
        INSERT INTO @allowednums
        ( num ) VALUES ( 6666666 )
        INSERT INTO @allowednums
        ( num ) VALUES ( 7777777 )
        INSERT INTO @allowednums
        ( num ) VALUES ( 8888888 )
        INSERT INTO @allowednums
        ( num ) VALUES ( 9999999 )

SELECT  [@nums].num
FROM    @nums
        INNER JOIN @allowednums ON CAST(right(CAST([@nums].num AS VARCHAR(20)), 7) AS INT) = [@allowednums].num
于 2013-11-13T09:57:06.910 回答