我正在尝试在用户搜索احمد时进行查询而不使用 Hamza(ء),并使用hamzam
返回结果并且结果为hamza
如下:
select *
from EMPLOYEES
Where (Replace(Replace(Replace(first_name, 'ا', 'أ'), 'و','ؤ'), 'ي', 'ى')
like (Replace(Replace(Replace(['احمد'], 'ا', 'أ'), 'و','ؤ'),'ى','ي')
但我得到例外:Oracle error - ORA-00936: missing expression
请告知如何修复它。
答案 0 :(得分:1)
你错过了2个括号:
SELECT *
FROM EMPLOYEES
WHERE (REPLACE(REPLACE(REPLACE(first_name, 'ا', 'أ'), 'و','ؤ'), 'ي', 'ى'))
LIKE (REPLACE(REPLACE(REPLACE(['احمد'], 'ا', 'أ'), 'و','ؤ'),'ى','ي'))
答案 1 :(得分:0)
ORA-00936: missing expression
始终表示语法错误。您发布的代码中有几个灯笼裤。
)
的数量必须与(
的数量相匹配。 [
不是Oracle SQL中的可识别字符。目前还不清楚你想要用它们实现什么,所以很难知道如何建议你解决这个问题,但是你需要以某种方式摆脱它们。,(
构造错误。 或者说明显的灯笼裤。因为当我尝试更正您的代码时,编辑器改变了我的更改,例如)
转回(
。当我将它粘贴到ASCII编辑器中时,我看到了......
Replace(Replace(Replace(first_name, '?', '?'), '?','?'), '?', '?')
...它给出了)
的正确计数和REPLACE()调用的正确嵌套。
假设:某种字符集误译。所以问题是,SO编辑器是介绍这种腐败还是你在客户端遇到这种情况?
顺便提一下,ASCII操作的右侧是
REPLACE(REPLACE(REPLACE(['????'], '?', '?'), '?','?'),'?','?'))
所以那些流氓[
]
是真实的(我认为),你必须删除它们。鉴于其他“错误”可能只是SO编辑器的假象,我认为那些方括号是你应该关注的事情。