单引号字符和管道符号代表什么

时间:2015-09-23 14:33:21

标签: oracle quotes

考虑以下sql-query:

SELECT 'delete from TABLE_1 TABLE_1.ID =''' || v.id || ''';'
from TABLE_2 v where v.ID in (select id from TABLE_1);

您如何阅读此语法?

1 个答案:

答案 0 :(得分:5)

单引号字符(')以字符串开头和结尾。

双管道符号(||)连接字符串。

根据一些评论||,MySQL无法使用。

现在,您的语句甚至包含三引号字符(''')。这是因为为了在(引用的)字符串中包含单引号字符,它需要被另一个(前面的)单引号字符转义。

所以:'foo'是字符串 foo 'bar' || ' ' || baz是字符串 bar baz It''s ok是字符串没关系

问题中的select语句返回一个数据类型为字符串的列的结果集。这些字符串看起来像这样:

delete from TABLE_1 TABLE_1.ID ='ABCD';
delete from TABLE_1 TABLE_1.ID ='DEFG';

ABCDDEFG ...是v.id的值(即table_2列ID)。

看起来你的select语句用于生成删除语句,而这些语句又必须以某种方式运行。当然,由于缺少WHERE,这些crated语句不会执行。