我想打一个MySQL的选择,但我需要选择两种类型的数据,一个开始于0256和其他与0356.我可以使用:我可以使用LIKE两次吗?
SELECT * FROM table WHERE tel LIKE '0256%' AND '0356%'
?
感谢, 塞巴斯蒂安
编辑 我有在PHP这些查询的问题。 上面的查询,在MySQL工作正常,但在PHP中我只得到了LIKE '0256%'
我想打一个MySQL的选择,但我需要选择两种类型的数据,一个开始于0256和其他与0356.我可以使用:我可以使用LIKE两次吗?
SELECT * FROM table WHERE tel LIKE '0256%' AND '0356%'
?
感谢, 塞巴斯蒂安
编辑 我有在PHP这些查询的问题。 上面的查询,在MySQL工作正常,但在PHP中我只得到了LIKE '0256%'
结果你可能在寻找这样的查询:
SELECT * /* Select all columns */
FROM table /* from the table named 'table' */
WHERE tel LIKE '0256%' /* where the field 'tel' starts with '0256' */
OR tel LIKE '0356%' /* or where the field 'tel' start with '0356' */
您使用和替代或有2个问题,并没有第二个参数之前LIKE
SELECT * FROM table WHERE tel LIKE '0256%' OR tel LIKE '0356%'
您也可以使用这个正则表达式:
SELECT *
FROM table
WHERE tel RLIKE '0[23]56.*'
随着更多数字选项的添加(假设它们会),这可能会使事情变得更加清晰。它也可能会使查询更快,但必须执行分析以查看事实是否如此。
MySQL中的正则表达式确保表扫描 - 除非通配符左侧,否则LIKE替代方法不会更有效。 – 2010-10-17 21:22:48
我不知道MySQL的正则表达式优化是有限的,但希望在未来的版本中优化的机会会增加。 – 2010-10-17 21:24:17
您需要'OR'后面的'tel'。 – Vlad 2010-10-17 21:20:16
@Vlad,感谢良好的捕获 – 2010-10-17 21:22:06