SQL 使用 6 个字符和通配符的条件进行查询

SQL Query with criteria of 6 chars and wildcards

我无法通过 SQL 查询来获取我需要的信息。我的输入是这样的:

COD SINOM
A   123456
B   987654, 123456, 111111
C   123456 , 234501
D   9912345699
E   99123456, 789012
F   77123456

两个字段都是文本类型,即使它们上面是数字(我们使用文本类型,因为有时它有前导零)。 Mycriteria 是 123456

我正在尝试查询 SINOM 包含我的条件的所有 COD,但只有 6 个字符 在一个单词中 。它是否有任何前导空格或逗号或分号并不重要(所有这些都是可能的),但字符串的长度必须为 6,并且可以是更多文本。标准可以在SINOM的左边、右边或中间。

我的实际查询是这样的:

SELECT Table1.cod, Table1.sinom
FROM Table1
WHERE (((Table1.sinom)="123456")) OR (((Table1.sinom) Like "*123456,*")) OR (((Table1.sinom) Like "*123456 *"))

但是我得到的输出是错误的:

正确的只有前 3 行(A、B、C)。其余行是错误的。我的预期输出是:

991234569999123456, 78901277123456 是错误的 因为它包含 123456 但不是一个单词。

正在寻找一个 SQL 查询来应用它,并尽可能避免使用 VBA 函数

其他正确的同义词是:

  1. 998877, 123456, 029384
  2. 012310,123456

我希望这是清楚的,但是如果有任何疑问,请不要犹豫。

谢谢!

我想你想要这样的东西:

WHERE "," & REPLACE(Table1.sinom, " ", "") & ",") Like "*,123456,*"

关键是查找分隔字符串 -- 但要确保列的开头和结尾有逗号。

这里需要注意的是空格。这将删除空格,假设它们只是空格。

我可能会提出以下建议:

select * from table1 where "," & table1.sinom & "," Like "*[!0-9]123456[!0-9]*"

[!0-9] 的使用将考虑数值周围任何定界符的可能性,与逗号(可以是任何非数字字符)的连接考虑数字出现在它自己或在字符串的开头或结尾。