Каковы различия между Апостроф, а одинарная кавычка? Могу ли я использовать оператор IF в запросе, как описано выше?


В руководстве codeigniter записывает следующее.

$this- > db - >select () принимает необязательный второй параметр. Если вы установите это ложь, CodeIgniter не будет пытаться чтобы защитить имена полей или таблиц с задними палочками. Это полезно, если вы нужен составной оператор select.

$this->db->select('(SELECT SUM(payments.amount) FROM payments 
WHERE payments.invoice_id=4) AS amount_paid', FALSE);
$query = $this->db->get('mytable');
...

И у меня есть следующий код из одного из приложений CI.

$this->db->select('slug, type, 
IF(`value` = "", `default`, `value`) as `value`', FALSE);

Q1. В чем разница между backtick ` и single quote '?

Q2. Могу ли я использовать оператор IF в запросе, как описано выше?

Q3. Что это значит?

IF(`value` = "", `default`, `value`) as `value`
1 4

1 ответ:

  1. В MySQL обратные кавычки цитируют имена, в то время как одиночные кавычки создают строки. Если у вас есть столбец с именем select, MySQL выдаст синтаксическую ошибку при использовании этого имени без обратных указателей - как в SELECT select FROM foo - поскольку он будет интерпретировать его как ключевое слово, которое может там не встречаться.

  2. Эта функция IF может использоваться в качестве спецификации столбца в операторах SELECT. Смотрите ссылку MySQL .

  3. Эта функция возвращает значение из столбца default, если value является пустой строкой. Иначе он возвращает значение из самого value. Результат будет называться value. Смотрите ссылкуMySQL для получения подробной информации.