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