Найти в Дзене
ГАУС IT

Экранирование о котором вы могли не знать. Порядок выполнения действий

Экранирование Первая часть этой статьи будет посвящена экранированию. Возьмем для примера UPDATE xml в базе данных. У нас имеется таблица TABLE, в которой есть колонки ID и XMLTEXT и нам надо обновить текст xml. Выглядит она вот так: <?xml version=’1.0’ encoding=’UTF-8’?> <a> <\a> Суть xml нам не интересна, нам важны кавычки. Как вы знаете из предыдущих наших статей, UPDATE пишется следующим образом: UPDATE TABLE SET XMLTEXT = ‘<?xml version=’1.0’ encoding=’UTF-8’?> <a> <\a>’ WHERE ID = 1 Но тут возникает проблема, ведь строка заканчивается здесь: ‘<?xml version=’ т.к. имеются одинарные кавычки в тексте, поэтому нам надо экранировать их. Как это сделать? Мы знаем, что в LIKE мы можем экранировать символы с помощью ключевого слова ESCAPE. Однако здесь решение проще, но оно не очевидно. Для того, чтобы экранировать одинарные ковычки мы должна их продублировать, т.о. наш запрос будет выглядеть так: UPDATE TABLE SET XMLTEXT = ‘<?xml version=’’1.0’’ encoding=’’UTF-8’’?> <a> <\a>’ WH
Оглавление

Экранирование

Первая часть этой статьи будет посвящена экранированию.

Возьмем для примера UPDATE xml в базе данных.

У нас имеется таблица TABLE, в которой есть колонки ID и XMLTEXT и нам надо обновить текст xml. Выглядит она вот так:

<?xml version=’1.0’ encoding=’UTF-8’?> <a> <\a>

Суть xml нам не интересна, нам важны кавычки. Как вы знаете из предыдущих наших статей, UPDATE пишется следующим образом:

UPDATE TABLE
SET XMLTEXT = ‘<?xml version=’1.0’ encoding=’UTF-8’?> <a> <\a>’
WHERE ID = 1

Но тут возникает проблема, ведь строка заканчивается здесь:

‘<?xml version=’

т.к. имеются одинарные кавычки в тексте, поэтому нам надо экранировать их.

Как это сделать? Мы знаем, что в LIKE мы можем экранировать символы с помощью ключевого слова ESCAPE. Однако здесь решение проще, но оно не очевидно. Для того, чтобы экранировать одинарные ковычки мы должна их продублировать, т.о. наш запрос будет выглядеть так:

UPDATE TABLE
SET XMLTEXT = ‘<?xml version=’’1.0’’ encoding=’’UTF-8’’?> <a> <\a>’
WHERE ID = 1

Порядок выполнения действий

Во второй части я затрону момент с порядком выполнения действий.

Логические операторы при отсутствии скобок, как и арифметические операторы, выполняются в соответствии с их старшинством.

Одноместная операция NOT имеет наивысший приоритет. Следующий приоритет имеет оператор AND.

Вот вам пример для проверки понимания приоритета, можете писать свой вариант решения в комментарии, я лайкну правильный ответ или отвечу на него:

DELETE TABLE
WHERE COLUMN1 LIKE '472__'
AND COLUMN2 >= 1000
AND COLUMN2 <= 500
OR COLUMN1 LIKE '471__'
AND COLUMN2 >= 5000
AND COLUMN2 <= 1200

Если вы не уверены, что точно помните порядок выполнения логических операторов, ставьте скобки!

Если у вас есть интересные примеры которые вы хотите разобрать пишите их в комментариях может ваши примеры попадут в следующие статьи.

Если статья была Вам полезна, ставьте пальцы вверх и подписывайтесь. Оставляйте свои пожелания и вопросы в комментариях, с удовольствием отвечу.

#it #sql #обучение #курс #программирование