mysql中是否有内置方式来查询包含特定单词的列,而单词也以输入开头。
例如,输入是" EF"
#1 ABCD EFGH <- Want this one
#2 BCDE FGHA
#3 CDEF GHAB
#4 EFGH ABCD <- And this one
如果我查询%EF%
,它会给我#1,#3和#4,如果我查询EF%
,它只会给#4。
基本上,我想知道mysql是否可以首先在PHP中执行preg_split
,然后查询EF%
,或者其他内容。
答案 0 :(得分:2)
答案 1 :(得分:0)
在这里回答我自己的问题。刚刚想出了一个解决方案,不是很漂亮,但它确实有效。
我刚把参数改成了
((Column LIKE '%...%' AND Column LIKE '% ...%') Or (Column LIKE '...%')) AND ...
将这一天留在这里一天,看看是否有人有更好的解决方案。
答案 2 :(得分:0)
如果您的专栏有两个字,那么您可以使用SUBSTR()
和LOCATE()
。
+--------------------------------+
| MyColumn |
+--------------------------------+
| Apple Effect |
| Effortless Orange |
+--------------------------------+
SELECT *
FROM (
SELECT
*,
SUBSTR(@values,1,LOCATE(' ',MyColumn)-1) AS FirstWord
SUBSTR(@values,LOCATE(' ',@values)+1) AS SecondWord
FROM MyTable
) AS X
WHERE FirstWord LIKE 'EF%'
OR SecondWord LIKE 'EF%'
如果您的列有两个以上的单词,那么事情会复杂一点,但您可以使用SUBSTRING_INDEX()
来查找第N个实例。
+--------------------------------+
| MyColumn |
+--------------------------------+
| The Perfect Apple Effect |
| The Special Effortless Orange |
+--------------------------------+
。
SUBSTRING_INDEX(SUBSTRING_INDEX(@values,' ',4),' ',-1)
=获取第四个单词。
可以找到更多示例和信息here。