查找一行中包含x个数字的行

时间:2011-08-15 13:39:14

标签: tsql sql-server-2008

我需要在表中找到连续16个数字的任何行。我需要确保用户尚未插入包含cc编号的行。我将用空字符串替换所有空格和破折号,并手动检查行以确保我只对适当的行动作。我们有几百万行,我需要缩小范围。

1 个答案:

答案 0 :(得分:4)

...
WHERE column_name LIKE REPLICATE('[0-9]', 16);

如果您希望那些的人像有效的信用卡号一样,那么:

...
WHERE column_name NOT LIKE REPLICATE('[0-9]', 16);

当然,请记住,美国运通卡只有15位数字。因此,要合并它,您可能需要:

...
WHERE column_name LIKE REPLICATE('[0-9]', 16)
OR column_name LIKE '3' + REPLICATE('[0-9]', 14);

编辑根据t-clausen.dk对问题的解释,OP尚未替换破折号和空格,您可能需要:

...
WHERE REPLACE(REPLACE(column_name, '-', ''),' ','') LIKE ...