查询以查找包含字母的字段中的所有单词

时间:2015-12-05 18:58:53

标签: mysql sql database mysqli

我正在尝试运行一个查询,可以查找包含字母的字段中的所有记录。 例如,假设一个状态字段包含一个记录值"纽约"还有另一项记录包括纽约。现在我正在寻找纽约或纽约将返回这2条记录。什么是查询。 目前我正在使用

val route: Route =
  path("hello") {
    getFromResource("abc.txt")
  }

任何建议

3 个答案:

答案 0 :(得分:0)

没有您的查询不正确,因为它搜索包含纽约或纽约的任何内容。 所以如果PENNY会匹配,虽然它不应该...... [/ p>

您的查询必须是这样的。

SELECT * from TABLE where field in ('NEW YORK','NY')

现在要获取首字母缩略词,您可以使用

delimiter $$
drop function if exists `initials`$$
CREATE FUNCTION `initials`(str text, expr text) RETURNS text CHARSET utf8
begin
    declare result text default '';
    declare buffer text default '';
    declare i int default 1;
    if(str is null) then
        return null;
    end if;
    set buffer = trim(str);
    while i <= length(buffer) do
        if substr(buffer, i, 1) regexp expr then
            set result = concat( result, substr( buffer, i, 1 ));
            set i = i + 1;
            while i <= length( buffer ) and substr(buffer, i, 1) regexp expr do
                set i = i + 1;
            end while;
            while i <= length( buffer ) and substr(buffer, i, 1) not regexp expr do
                set i = i + 1;
            end while;
        else
            set i = i + 1;
        end if;
    end while;
    return result;
end$$
drop function if exists `acronym`$$
CREATE FUNCTION `acronym`(str text) RETURNS text CHARSET utf8
begin
    declare result text default '';
    set result = initials( str, '[[:alnum:]]' );
    return result;
end$$
delimiter ;

因此,您的最终查询将是这样的。

SELECT * from TABLE where field in ('NEW YORK',select acronym('Come Again? That Cant Help!'))

来源: - Mysql extract first letter of each word in a specific column

答案 1 :(得分:0)

据推测,你想要的逻辑是:

col like '%New York%' or col like '%NY%'

或者,如果你想使用正则表达式:

col regexp 'New York|NY'

答案 2 :(得分:0)

从表中选择*,其中col如'%N'或col如'%n'