我有一个数组:
$codes = array (97121, 97122, 97123, 97180);
真正的数组要长得多,它包含近130个代码,所以我认为它不一定是一个循环。
我有一个mySQL表,其中有一列 VilleAnn
(带有邮政编码的城市)ex:
使用mysqli我必须选择 VilleAnn
不包含数组 $codes
中的任何邮政编码。
如果 VilleAnn
是一个简单的邮政编码我会说:
SELECT * FROM table WHERE VilleAnn NOT IN(97121, 97122, 97123, 97180)
但在这种情况下,必须使用NOT LIKE "%..."
有什么建议吗?
答案 0 :(得分:3)
你可以REGEXP:
SELECT * FROM table WHERE VilleAnn NOT REGEXP '97121|97122|97123|97180|....'
答案 1 :(得分:2)
这样的事情:
SELECT *
FROM `table`
WHERE (
`VilleAnn` NOT LIKE '%97121%' AND
`VilleAnn` NOT LIKE '%97122%' AND
`VilleAnn` NOT LIKE '%97123%' AND
`VilleAnn` NOT LIKE '%97180%'
)
答案 2 :(得分:2)
条件不适用于通配符。您最好的选择是尝试从原始字段中提取邮政编码,在此示例中
plugins: {
ptype: 'cellediting',
clicksToEdit: 1,
listeners: {
validateedit: function( editor, context, eOpts ){
var store = context.column.getEditor().store,
record = context.record;
if(store.find('id',context.value) === -1){
context.cancel = true;
}
}
}
}
我认为现实生活更复杂,所以可能需要调整以反映该领域的实际格式。
答案 3 :(得分:1)
SELECT * FROM table WHERE VilleAnn NOT REGEXP '[0-9]';
这会对你有帮助。
要检查四次出现,您可以使用:
SELECT * FROM table WHERE VilleAnn NOT REGEXP '[0-9]{4}';