我们的数据库中存储了大量的商业名称。我们的一些客户在名称中输入了SSN。我正在尝试获取所有这些商业名称
问题:
查找NAME中每个单词的长度,并返回长度为9或11的任何人
示例:
测试123456789 test2 - 这应该显示在结果中
测试123456 test2 ---这不应该出现
测试123456789 test2 12345678911 - 这应该显示
应该返回字符串中的任何单词(数字或字母或两者的组合)9或11 ..谢谢你
答案 0 :(得分:3)
你可以使用LIKE。在列名称之前或之后忽略任何内容的百分号,空格以确保前后有空格,然后搜索数值的范围。
SELECT
*
FROM
Table
WHERE
Name LIKE '% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %'
OR Name LIKE '% [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] %'
编辑:
实际上,重读初始问题,看起来你不是只寻找9或11的数字字符串,而是查找所有字符串。在那种情况下,@ JoeMalpass可能比我想的更合适。
SELECT
*
FROM
Table
WHERE
--Surrounded by spaces
Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %'
OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %'
--At the beginning with extra information after
OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %'
OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ] %'
--At the beginning with extra information before
OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]'
OR Name LIKE '% [^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]'
--The entire column
OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]'
OR Name LIKE '[^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ][^ ]'