Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
条件为6个字符和通配符的SQL查询_Sql_Ms Access_Ms Access 2016 - Fatal编程技术网

条件为6个字符和通配符的SQL查询

条件为6个字符和通配符的SQL查询,sql,ms-access,ms-access-2016,Sql,Ms Access,Ms Access 2016,我一直在使用SQL查询来获取所需的内容。我的意见是: COD SINOM A 123456 B 987654, 123456, 111111 C 123456 , 234501 D 9912345699 E 99123456, 789012 F 77123456 这两个字段都是文本类型,即使它们是数字,我们也使用文本类型,因为有时它有前导零。我的标准是123456 我试图查询SINOM包含我的条件的所有COD,但一个单词中只有6个字符。不管它是否有任何前导空格、逗号或分

我一直在使用SQL查询来获取所需的内容。我的意见是:

COD SINOM
A   123456
B   987654, 123456, 111111
C   123456 , 234501
D   9912345699
E   99123456, 789012
F   77123456
这两个字段都是文本类型,即使它们是数字,我们也使用文本类型,因为有时它有前导零。我的标准是123456

我试图查询SINOM包含我的条件的所有COD,但一个单词中只有6个字符。不管它是否有任何前导空格、逗号或分号,所有这些都是可能的,但字符串的len必须是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。其余的行是错误的。我的预期产出是:

9912345699123456789012和77123456是错误的,因为它包含123456而不是单个单词

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

其他正确的会议是:

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


谢谢

我想你想要这样的东西:

WHERE "," & REPLACE(Table1.sinom, " ", "") & ",") Like "*,123456,*"
关键是查找带分隔符的字符串,但要确保列的开头和结尾都有逗号


这里的一个警告是空间。这将删除空格,假设它们只是空格。

我想您需要这样的内容:

WHERE "," & REPLACE(Table1.sinom, " ", "") & ",") Like "*,123456,*"
关键是查找带分隔符的字符串,但要确保列的开头和结尾都有逗号


这里的一个警告是空间。这会删除空格,假设它们只是空格。

我可能会提出以下建议:

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

[!0-9]的使用将考虑到数值周围可能存在任何分隔符,带有逗号的缩合(可以是任何非数字字符)将考虑到数字单独出现或出现在字符串的开头或结尾的情况。

我可能会提出以下建议:

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

使用[!0-9]将考虑到数值周围可能存在任何分隔符,而使用逗号(可以是任何非数字字符)表示数字本身或出现在字符串开头或结尾的情况。

Omg,这一点非常有效,我现在的查询是从Table1中选择Table1.cod,其中,&REPLACETable1.sinom,,&,Like*,123456,*;天哪,这一个工作得很好,我现在的查询是从Table1中选择Table1.cod,其中,&REPLACETable1.sinom,&,Like*,123456,*;