MySQL选择列等于字符串的一部分

时间:2018-11-04 14:16:38

标签: php mysql sql phpmyadmin

我正在尝试确定是否对此查询:

表格列值:

harken op het strand

输入字符串:

Jantje ging harken op het strand omdat hij daar zin in had.

结果(1行):id "1", value "harken op het strand";

输入字符串:

Jantje ging met harken het strand op omdat hij daar zin in had.

结果:为空。

我知道它一定是这样的:

SELECT *
FROM table
WHERE value LIKE 'Jantje ging harken op het strand omdat hij daar zin in had.'

LIKE尝试将字符串的每个部分与数据库表列行进行匹配。

3 个答案:

答案 0 :(得分:1)

要稍微修改Gordon的答案,我们可以尝试在此处使用REGEXP并使用适当的单词边界:

SELECT t.*
FROM yourTable t
WHERE
    'Jantje ging harken op het strand omdat hij daar zin in had.'
    REGEXP CONCAT('[[:<:]]', t.value, '[[:>:]]');

答案 1 :(得分:0)

我认为您希望以其他顺序LIKE

SELECT t.*
FROM table t
WHERE 'Jantje ging harken op het strand omdat hij daar zin in had.' LIKE CONCAT('%', t.value, '%')

答案 2 :(得分:0)

另一种可能性是使用Locate()函数。与使用Like %..%相比,它可能更。我们将简单地检查输入字符串值中字段(列)值(子字符串)的首次出现。如果存在,我们已经找到一个匹配项:

SELECT *
FROM your_table_name 
WHERE LOCATE(value, 'Jantje ging harken op het strand omdat hij daar zin in had.') > 0