SELECT *
FROM table_name
WHERE column_name LIKE '%' || your_user_input_function() || '%'
型 如果你确实需要子查询的factoring子句,那么你需要将它JOIN到查询中:
WITH user_input (usr_ip) AS (
SELECT 'user input' FROM DUAL
)
SELECT t.*
FROM table_name t
INNER JOIN user_input u
ON t.column_name LIKE '%' || u.usr_ip || '%';
型 或者使用子查询:
WITH user_input (usr_ip) AS (
SELECT 'user input' FROM DUAL
)
SELECT *
FROM table_name
WHERE column_name LIKE '%' || (SELECT usr_ip FROM user_input) || '%';
2条答案
按热度按时间pinkon5k1#
您不需要子查询因子分解子句(也称为CTE),并且可以将查询简化为:
字符串
如果您有一个预处理器,允许您通过函数输入用户输入(因为Oracle数据库中本机不存在此类函数),则:
型
如果你确实需要子查询的factoring子句,那么你需要将它
JOIN
到查询中:型
或者使用子查询:
型
fiddle
gg58donl2#
一般来说,以下几种方法都可以...
字符串
但是如果你的真实的问题是如何让用户输入到一个SQL语句中,那么,这不是SQL要做的事情。没有SQL语句或函数直接从用户那里获取数据。可以在调用程序中使用主机变量或动态SQL等机制来向数据库提供用户输入。