0

如果假设该人搜索用户名 - > johnny123 并且如果没有这样的用户名,那么我希望它返回一个与输入的用户名模式匹配的用户名列表,例如 johnny12345 、 johnnyboy 等。

4

3 回答 3

2

这将起作用:

SELECT * FROM tablename WHERE username like 'johnny%';

这将搜索所有以“johnny”开头的用户名。

于 2012-12-21T06:15:35.790 回答
1

这将为 johnny123 返回一个匹配项。否则,如果没有找到 johnny123,它将返回以 'johnny' 开头的所有内容。不优雅,但它符合您的描述。

使用下面的功能,你会去select * from username.test('username');

create function username.test(text)
  returns setof text as $$
  declare
    usr text;
  begin
    usr := (select username from tablename where v like $1);
  if (usr is not null)
    then
       return next usr;     
  else
    return query (select username from tablename where v like '' || $1 || '%'); 
  end if;
  return;
  end;
  $$ language 'plpgsql';
于 2012-12-21T06:52:15.950 回答
1

试试这个:

select * from table_name
where username like '%johnny%';

这将返回用户名中包含 johnny 的所有行。例如,如果您的表包含以下三个用户名:

johnny123
123johnny
123johnny456

所有行都将返回,因为它们的用户名中包含 johnny。

于 2012-12-21T10:55:12.567 回答