下面是我想做的一个例子:
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;
您问,在不使用动态SQL和concat方法的情况下,如何在SQL查询中使用变量?
对不起,你不能。动态SQL是在MySQL中实现的方式。
这适用于模式、表和列的名称(即数据字典名称),而不适用于值。
SELECT xxx FROM yyy WHERE zzz
SELECT id,name,value FROM transaction WHERE id=?
然后,他们继续为数据值使用绑定变量。
MySQL prepared语句只是在MySQL服务器内部而不是在主机语言中完成这种工作的一种方式。但是(在我看来)准备好的语句很难进行单元测试和故障排除,因此使用宿主语言来实现这一点是更有效的软件工程。
当应用程序的数据源不受信任时会有一点危险,因此检查每个输入的有效性是很重要的。
问题内容: 当我尝试在数据库中放置新条目时,出现错误和下面显示的错误。我已经搜索了好几个小时,但无法检测到出了什么问题。任何输入都是极好的! 这是 LogCat 的 错误 。 我的 数据库文件 。 然后是我的 AddNewDay文件 。 这就是我在数据库中添加新条目的方式。 问题答案: 所以基本上我找到了解决方案。我仍然对它的愚蠢感到困惑。显然,数据库工作是我的超敏感材料!我的问题是我忘记了最后一
问题内容: 我正在尝试将表名传递到我的mysql存储过程中,以使用此sproc从其他表中进行选择,但是它不起作用… 这是我正在尝试的: 我也尝试过不带@符号,它只是告诉我TableName不存在…我知道:) 问题答案: 它取决于DBMS,但是这种表示法通常需要Dynamic SQL,并且会遇到一个问题,即函数执行时的返回值取决于输入。这给系统带来了麻烦。作为一般规则(因此可能会有例外),DBMS不
方法是否可能返回“object”?谢谢
我有一个命名的数据帧列表。我需要用数据帧的名称为每个数据帧创建一个新变量,这样我最终就可以将它们全部rbind起来,以生成统计数据和绘图。 我知道lapply不会传递对象的名称,也知道有很多类似问题的帖子,但我无法将我看到的任何解决方案适用于我的特定问题。 这是我第一次尝试的方法,但显然不起作用,因为names(x)不会返回对象的名称。 TestList<-list(a=data.frame(Va
问题内容: 如何使用列表中的名称创建新变量?这个: 当然不行。我该怎么办? 我想做这个: 问题答案: 我认为更适合此目的: 但是,如果您仍然想即时创建变量,则可以使用:
我想使用在数据帧中创建多个新列。列名及其内容应动态生成。 来自IRIS的示例数据: 我创建了一个函数来从变量中更改新列: