如何在不使用动态 SQL 和 concat 方法的情况下在 SQL 查询中使用变量?
我希望能够在脚本开头声明变量,然后在整个脚本中使用它们(例如表名)
这是我想做的一个例子:
declare variables
Set @Table1 = 'WhatsOn_20141208'
-- drop and re-create table
drop table if exists @Table1;
CREATE TABLE @Table1 (
rac_account_no varchar(100),
addressLine2 varchar(100)
);
-- load data into table
LOAD DATA LOCAL INFILE 'C:/Example.txt'
INTO TABLE @Table1
FIELDS TERMINATED BY '|'
ENCLOSED BY '"' LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- update addressLine2 column
Update @Table1
set addressLine2 = REPLACE(addressLine2,"*UNKNOWN*","");
如果表名更改,我希望能够在变量中更改一次,而不是查找和替换所有出现的位置。
到目前为止,我发现的唯一解决方案是使用动态 SQL 并像以下示例一样连接字符串:
SET @s = CONCAT('select * from ', @Cat, ' where ID = ', @ID_1);
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
有没有更简单的方法?
干杯,卢卡斯