Яка різниця між одинарними та подвійними лапками в SQL?
Яка різниця між одинарними та подвійними лапками в SQL?
Відповіді:
Одиничні лапки використовуються для позначення початку та кінця рядка в SQL. Подвійні лапки зазвичай не використовуються в SQL, але вони можуть відрізнятися від бази даних до бази даних.
Дотримуйтесь використання одинарних лапок.
Це все одно головне використання. Ви можете використовувати одиничні лапки для псевдоніму стовпців - там, де ви хочете, щоб ім'я стовпця, на яке ви посилаєтесь у коді програми, було чимось іншим, ніж те, що стовпець насправді викликається в базі даних. Наприклад: PRODUCT.id
було б читабельніше як product_id
, тому ви використовуєте будь-яке з наведених нижче:
SELECT PRODUCT.id AS product_id
SELECT PRODUCT.id 'product_id'
Або працює в Oracle, SQL Server, MySQL ... але я знаю, що деякі казали, що TOAD IDE, здається, доставляє деякого горя при використанні підходу з єдиними цитатами.
Вам потрібно використовувати одинарні лапки, коли псевдонім стовпця містить пробільний символ, наприклад product id
, але не рекомендується, щоб псевдонім стовпця був більше ніж одним словом.
SELECT * FROM USERS 'Users'
не працює в SQL Server, але є SELECT * FROM USERS "Users"
.
SELECT PRODUCT.id 'product_id'
не буде працювати в Oracle. Одиночні лапки призначені лише для літературних символів. Їх не можна використовувати для ідентифікаторів у (стандартному) SQL (хоча деякі СУБД просто ігнорують стандарт SQL, коли мова заходить про цитовані ідентифікатори)
Просте для нас правило пам’ятати, що використовувати в такому випадку:
В MySQL і MariaDB, то ` (лапки) символ такий же , як « символ. Ви можете використовувати » , коли ваш SQL_MODE
був ANSI_QUOTES
включений.
Одиничні лапки розмежовують строкову константу або константу дати / часу.
Подвійні лапки розмежують ідентифікатори, наприклад, назви таблиць або назви стовпців. Зазвичай це потрібно лише тоді, коли ваш ідентифікатор не відповідає правилам для простих ідентифікаторів.
Дивитися також:
Ви можете змусити MySQL використовувати подвійні лапки згідно стандарту ANSI:
SET GLOBAL SQL_MODE=ANSI_QUOTES
Ви можете змусити Microsoft SQL Server використовувати подвійні лапки відповідно до стандарту ANSI:
SET QUOTED_IDENTIFIER ON
У ANSI SQL подвійні лапки цитують імена об'єктів (наприклад, таблиці), що дозволяє їм містити символи, не дозволені в іншому випадку, або бути такими ж, як зарезервовані слова (дійсно уникайте цього).
Одиночні цитати для рядків.
Однак MySQL не звертає уваги на стандарт (якщо його SQL_MODE не змінено) і дозволяє їх використовувати безперервно для рядків.
Більше того, Sybase та Microsoft також використовують квадратні дужки для цитування ідентифікаторів.
Тож це трохи специфічно для постачальника.
Інші бази даних, такі як Postgres та IBM, фактично дотримуються стандарту ansi :)
Різниця полягає в їх використанні. Одиничні лапки в основному використовуються для позначення рядка WHERE, HAVING, а також у деяких вбудованих функціях SQL, таких як CONCAT, STRPOS, POSITION тощо.
Якщо ви хочете використовувати псевдонім, який має пробіл між ними, ви можете використовувати подвійні лапки, щоб посилатися на цей псевдонім.
Наприклад
(select account_id,count(*) "count of" from orders group by 1)sub
Ось підзапит із таблиці замовлень, що має account_id як зовнішній ключ, який я агрегую, щоб знати, скільки замовлень розміщено в кожному обліковому записі. Тут я дав одному стовпчику будь-яку випадкову назву як "рахувати" заради мети.
Тепер напишемо зовнішній запит, щоб відобразити рядки, де "count of" більше 20.
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;
Ви можете застосувати той самий випадок і до виразів загальної таблиці.