【问题标题】:SQL like command failing in Oracle类似 SQL 的命令在 Oracle 中失败
【发布时间】:2013-06-14 21:20:21
【问题描述】:

我有以下代码,我想比较两个字符串(varchars)。

如果 item.item_name 在任何地方包含字符串设备类型,我希望它返回记录。

但是我收到了一个错误,在上面的命令中说明了 INVALID NUMBER('%' + equipment_type + '%')。

select * from equipment_type
join item on upper(item.item_name) like upper('%' + equipment_type + '%') 

我意识到问题是将通配符字符串添加到变量设备类型。 有谁知道如何让这个通配符比较起作用?

【问题讨论】:

  • Oracle 仅将 + 用于数字和日期数学运算。对于字符串连接,请使用双杠 (||):... like upper('%' || equipment_type || '%')
  • @EdGibbs 谢谢老兄,太完美了。
  • @EdGibbs - 你应该把它作为答案..
  • @MikeChristensen - 我确实考虑过这样做,在“是的,这是一个真正的答案”和“不,这是一个非常微不足道的答案”之间摇摆不定(当然,对于 OP Jordan 来说不是)。既然您已经让我考虑了,我会将其添加为答案,以防其他人发现它有用。感谢您的反馈!
  • @EdGibbs +1 胡扯

标签: sql oracle concatenation sql-like unary-operator


【解决方案1】:

注意:我最初在 cmets 中回答了这个问题。从那时起,有人建议我在此处发布解决方案作为“真实”答案。来了……

Oracle 仅将 + 用于数字和日期数学运算。对于字符串连接,请使用双杠 (||):

select * from equipment_type
join item on upper(item.item_name) like upper('%' || equipment_type || '%')

                       The only changes are here  ^^   ... and here ^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 2012-11-02
    • 1970-01-01
    • 2016-01-02
    • 2014-04-13
    • 2023-03-24
    • 2019-01-07
    相关资源
    最近更新 更多