php - MySQL 查询或正则表达式仅查找模式 D、E、F

标签 php mysql sql regex

我的 google-fu 让我失望了,如果有人能为我指出概念或术语的正确方向,那就太好了。

我正在尝试从 mysql 数据库中获取行。假设我有一个等于'DEF' 的变量。 我想在数据库中以任意顺序搜索仅包含 DEF 的记录。

示例列,

    ABC
    BC
    D
    DEX
    DEF
    DEFF
    ED
    EDF
    FED
    FEED

会回来 D、DEF、ED、EDF、FED

最佳答案

您需要的是一个用户定义的函数来检查字符串是否匹配。这是一个:

delimiter //
create function permutes(needles varchar(255), haystack varchar(255)) returns bool
begin
    declare needles_position, first_occurance int;
    set needles_position = length(needles);
    while needles_position > 0 do
        set first_occurance = instr(haystack, substring(needles, needles_position, 1));
        if first_occurance = 0 then
            return false;
        end if;
        set haystack = (select concat(substring(haystack,1,first_occurance-1), substring(haystack,first_occurance+1)));
        set needles_position = needles_position - 1;
    end while;
    return true;
end//

现在你会得到你想要的:

select example_column from your_table where permutes(example_column ,'def');

该函数的作用是获取所有针字符并查看它们是否存在于 haystack 中。每根针都会在检查下一根针之前从干草堆中取出,因此您不会得到 double 。

关于php - MySQL 查询或正则表达式仅查找模式 D、E、F,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23218557/

相关文章:

sql - rails : Using jquery tokeninput (railscast #258) to create new entries

php - 使用字符串作为条件计算 SQL 中的行数

mysql - 如何在本地网络上的多台计算机上使用相同的 MySql 数据库

mysql - 我可以将 <> 与外连接一起使用吗?

php - 我的 php/sql 脚本中出现错误?

php - 检索多个YouTube用户的最新视频并按最新顺序排序

mysql - 查找MySQL中两个表的行数差异

php - 如何向带有外键的表中插入数据?

sql - 使用 PHP 显示 SQL 语句的部分结果

php - ZF2如何监听特定controller的dispatch事件