【发布时间】:2013-10-03 19:03:07
【问题描述】:
我对 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
我发现的所有示例在函数体中总是有一个选择、删除、更新、插入。
实际上可以定义一个没有select、delete、update、insert的函数吗?
我正在使用 PostgresSql 9.2。
【问题讨论】:
-
我补充了雷米的回答:您应该将
lower()函数应用于参数而不是结果。否则Ä不会转换为ae
标签: sql postgresql