Рассмотрим следующий SQL-запрос:Что апостроф символ и символ трубы стоять
SELECT 'delete from TABLE_1 TABLE_1.ID =''' || v.id || ''';'
from TABLE_2 v where v.ID in (select id from TABLE_1);
Как вы читаете этот синтаксис?
Рассмотрим следующий SQL-запрос:Что апостроф символ и символ трубы стоять
SELECT 'delete from TABLE_1 TABLE_1.ID =''' || v.id || ''';'
from TABLE_2 v where v.ID in (select id from TABLE_1);
Как вы читаете этот синтаксис?
Символ одиночной кавычки ('
) запускает и завершает строку.
Символ двойной трубы (||
) объединяет строки.
В соответствии с некоторыми комментариями ||
, не доступен в MySQL.
Теперь ваше утверждение содержит даже символы тройной кавычки ('''
). Это связано с тем, что для того, чтобы иметь одиночный символ кавычки в строке (кавычки), он должен быть экранирован другим (предшествующим) символом одиночной кавычки.
Итак: 'foo'
это строка Foo, 'bar' || ' ' || baz
это строка бар Баз и It''s ok
является строка Это нормально.
Оператор select в вашем вопросе возвращает набор результатов, состоящий из одного столбца, тип данных которого является строкой. Эти строки выглядят так:
delete from TABLE_1 TABLE_1.ID ='ABCD';
delete from TABLE_1 TABLE_1.ID ='DEFG';
тогда как ABCD
, DEFG
... являются значения v.id
(то есть из table_2 Идентификатор столбца).
Похоже, что ваш оператор select используется для создания операторов удаления, которые в свою очередь должны каким-то образом запускаться. Конечно, те сформулированные утверждения не будут выполняться, так как отсутствует WHERE
.
Это правильно. Трубы не работают в SQL. Это только Oracle. – durbnpoisn
Итак, что значит выбрать строку? – Chris311
@durbnpoisn Я думаю, что postgres использует || для конкатенации. – markg
Я не думаю, что вы можете выбрать инструкцию delete. – durbnpoisn