条件为6个字符和通配符的SQL查询
我一直在使用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个字符。不管它是否有任何前导空格、逗号或分
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,*;