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