2010-10-17 65 views
0

我想打一个MySQL的选择,但我需要选择两种类型的数据,一个开始于0256和其他与0356.我可以使用:我可以使用LIKE两次吗?

SELECT * FROM table WHERE tel LIKE '0256%' AND '0356%'

感谢, 塞巴斯蒂安

编辑 我有在PHP这些查询的问题。 上面的查询,在MySQL工作正常,但在PHP中我只得到了LIKE '0256%'

回答

11

结果你可能在寻找这样的查询:

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' */ 
4

您使用和替代或有2个问题,并没有第二个参数之前LIKE

SELECT * FROM table WHERE tel LIKE '0256%' OR tel LIKE '0356%' 
+1

您需要'OR'后面的'tel'。 – Vlad 2010-10-17 21:20:16

+0

@Vlad,感谢良好的捕获 – 2010-10-17 21:22:06

0

您也可以使用这个正则表达式:

SELECT * 
FROM table 
WHERE tel RLIKE '0[23]56.*' 

随着更多数字选项的添加(假设它们会),这可能会使事情变得更加清晰。它也可能会使查询更快,但必须执行分析以查看事实是否如此。

+1

MySQL中的正则表达式确保表扫描 - 除非通配符左侧,否则LIKE替代方法不会更有效。 – 2010-10-17 21:22:48

+0

我不知道MySQL的正则表达式优化是有限的,但希望在未来的版本中优化的机会会增加。 – 2010-10-17 21:24:17

相关问题