查询显示与给定用户名匹配的相关用户名

时间:2012-12-21 05:51:57

标签: sql sql-server-2008 postgresql postgresql-9.2

如果我们说该人搜索用户名,那么查询会是什么?> johnny123并且如果没有这样的用户名,那么我希望它返回一个列表用户名,该用户名与输入的用户名模式相匹配,如johnny12345,johnnyboy等。

3 个答案:

答案 0 :(得分:2)

这将有效:

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

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

答案 1 :(得分: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';

答案 2 :(得分:1)

试试这个:

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

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

johnny123
123johnny
123johnny456

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