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

纯SQL下将常量'constantHere'替换为可统一修改变量的方法

纯SQL下替换重复常量的变通方案

以下几种方法可以帮你在多UNION的查询里只维护一处常量,不用每次逐处修改:

1. 通用CTE(公共表表达式)方案

这是跨数据库最通用的纯SQL写法,先在CTE里定义好要替换的常量,后续所有子查询都引用这个值,自动拼接%通配符:

WITH query_params AS (
  SELECT 'constantHere' AS search_value
)
SELECT t.* 
FROM table1 t
JOIN query_params p ON t.column LIKE CONCAT('%', p.search_value, '%')
UNION
SELECT t.* 
FROM table2 t
JOIN query_params p ON t.column LIKE CONCAT('%', p.search_value, '%')
UNION
-- 其他UNION子句同理
SELECT t.* 
FROM tableN t
JOIN query_params p ON t.column LIKE CONCAT('%', p.search_value, '%');

只需要修改query_params里的'constantHere',所有子查询的匹配条件会自动同步。

2. 临时表方案

如果你的数据库支持临时表(比如MySQL、SQL Server、PostgreSQL),可以把常量存在临时表里,查询时直接引用:

-- 创建临时表并插入常量
CREATE TEMPORARY TABLE temp_params (
  search_value VARCHAR(255) NOT NULL
);
INSERT INTO temp_params VALUES ('constantHere');

-- 主查询
SELECT * FROM table1 WHERE column LIKE CONCAT('%', (SELECT search_value FROM temp_params), '%')
UNION
SELECT * FROM table2 WHERE column LIKE CONCAT('%', (SELECT search_value FROM temp_params), '%')
UNION
-- 其他UNION子句
SELECT * FROM tableN WHERE column LIKE CONCAT('%', (SELECT search_value FROM temp_params), '%');

-- 用完可以手动删除,部分数据库会话结束会自动清理
-- DROP TEMPORARY TABLE temp_params;

这种方法适合需要在多个不同查询里复用同一个常量的场景。

3. 数据库特定变量方案

虽然不是标准纯SQL,但主流数据库都有自己的变量语法,写法更简洁:

  • MySQL/MariaDB:
SET @search_val = 'constantHere';
SELECT * FROM table1 WHERE column LIKE CONCAT('%', @search_val, '%')
UNION
SELECT * FROM table2 WHERE column LIKE CONCAT('%', @search_val, '%');
  • SQL Server:
DECLARE @search_val VARCHAR(255) = 'constantHere';
SELECT * FROM table1 WHERE column LIKE '%' + @search_val + '%'
UNION
SELECT * FROM table2 WHERE column LIKE '%' + @search_val + '%';
  • Oracle:
DEFINE search_val = 'constantHere';
SELECT * FROM table1 WHERE column LIKE '%' || '&search_val' || '%'
UNION
SELECT * FROM table2 WHERE column LIKE '%' || '&search_val' || '%';

这种方案最省心,不过只适用于特定数据库环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:03:16