You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Oracle SQL中使用LIKE运算符匹配用户输入的模式?

Oracle SQL实现基于用户输入的模糊匹配查询问题

你需要查询表中某列包含用户指定内容的数据,但当前的SQL写法无法得到正确结果。

你的错误代码:

with user_input as(
select 'user input' usr_ip
from dual
)

select
*
from table
where column like '%usr_ip%'

问题原因:

这里的'%usr_ip%'是字符串字面量,Oracle会把它当成普通文本去匹配,也就是只会找出列中包含"usr_ip"这几个字符的行,而不是引用CTE里user_input表中的usr_ip值。

正确写法:

方法1:通过字符串拼接引用CTE中的值

使用Oracle的字符串连接操作符||把通配符%和usr_ip的值拼接起来:

WITH user_input AS (
    SELECT 'user input' usr_ip FROM dual
)
SELECT t.*
FROM your_table t
JOIN user_input ui 
  ON t.your_column LIKE '%' || ui.usr_ip || '%';

方法2:使用CONCAT函数拼接

如果习惯用函数,也可以用CONCAT嵌套实现:

WITH user_input AS (
    SELECT 'user input' usr_ip FROM dual
)
SELECT t.*
FROM your_table t, user_input ui
WHERE t.your_column LIKE CONCAT(CONCAT('%', ui.usr_ip), '%');

方法3:使用绑定变量(适合实际业务场景)

如果是在应用程序中调用SQL,推荐用绑定变量,避免硬编码和SQL注入风险:

-- :usr_ip 是绑定变量,由应用程序传入值
SELECT *
FROM your_table
WHERE your_column LIKE '%' || :usr_ip || '%';

注意:把代码中的your_table和your_column替换成你实际的表名和列名。

内容的提问来源于stack exchange,提问作者flyme2themoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:02:32