私はSQLの経験があまりないので、これは私の(おそらくばかげた)質問です:
次のクエリがあります
select *
from myTable
where lower(replace(lastname, 'ü', 'ue')) = lower(replace(someStr, 'ü', 'ue'))
を交換することは可能ですか?
lower(replace(lastname, 'ü', 'ue')) = lower(replace(someStr, 'ü','ue'))
機能付き?
このようなもの:
select *
from idmanlight.nethz_user
where myFunction(lastname) = myFunction(someStr)
このように関数を定義しようとしました:
CREATE FUNCTION myFunction(IN str character varying) RETURNS void AS $$
LOWER(replace(replace(replace((str, 'ü', 'ue'), 'ä', 'ae'), 'ö', 'oe'));
$$ LANGUAGE sql;
しかし、それを実行するとエラーが発生します
エラー: »LOWER« による構文エラー SQL 状態: 42601 文字: 88
私が見つけたすべての例には、関数の本体に常に選択、削除、更新、挿入があります。
選択、削除、更新、挿入を含まない関数を定義することは実際に可能ですか?
PostgresSql 9.2 を使用しています。