Каков полный список всех специальных символов для SQL (меня интересует SQL Server, но подойдут и другие) Предложение LIKE?
Например
SELECT Name FROM Person WHERE Name LIKE '%Jon%'
- %
- _
- [спецификатор] Например [аз]
- [^ Спецификатор]
- Предложение ESCAPE Пример:% 30! %% 'ESCAPE'! ' оценит 30% как истину
- 'персонажей нужно экранировать с помощью' Например, они становятся ими ''
%
- Любая строка из нуля или более символов._
- Любой одиночный персонаж- Предложение ESCAPE Пример:% 30! %% 'ESCAPE'! ' оценит 30% как истину
%
- Любая строка из нуля или более символов._
- Любой одиночный персонаж- Предложение ESCAPE Пример:% 30! %% 'ESCAPE'! ' оценит 30% как истину
Sybase
- %
- _
- [спецификатор] Например [аз]
- [^ Спецификатор]
%
- Любая строка из нуля или более символов._
- Любой одиночный персонаж
%
- Любая строка из нуля или более символов._
- Любой одиночный персонаж- Предложение ESCAPE Пример:% 30! %% 'ESCAPE'! ' оценит 30% как истину
- %
- _
- Символ ESCAPE, только если он указан .
В PostgreSQL также есть SIMILAR TO
оператор, который добавляет следующее:
[specifier]
[^specifier]
|
- любой из двух вариантов*
- повторение предыдущего пункта ноль или более раз.+
- повторение предыдущего пункта один или несколько раз.()
- группировать предметы вместе
Идея состоит в том, чтобы сделать эту вики-страницу сообщества, которая может стать для этого «универсальным магазином».
sql
special-characters
sql-like
a_horse_with_no_name
источник
источник
LIKE
; напримерWHERE familyname = 'O''Toole'
. В-третьих,SIMILAR TO
оператор вводит своего рода гибридное регулярное выражение, которое имеет свои особенности (и многие другие специальные символы), поэтому, вероятно, его не следует здесь включать. Думаю, это 3 комментария, но испанской инквизиции никто не ждет.Ответы:
Для SQL Server с http://msdn.microsoft.com/en-us/library/ms179859.aspx :
% Любая строка из нуля или более символов.
WHERE title LIKE '%computer%'
находит все названия книг со словом «компьютер» в любом месте названия книги._ Любой одиночный символ.
WHERE au_fname LIKE '_ean'
находит все имена из четырех букв, оканчивающиеся на ean (Дин, Шон и т. д.).[] Любой одиночный символ в пределах указанного диапазона ([af]) или набора ([abcdef]).
WHERE au_lname LIKE '[C-P]arsen'
находит фамилии авторов, оканчивающиеся на arsen и начинающиеся с любого символа между C и P, например Carsen, Larsen, Karsen и т. д. При поиске по диапазону символы, включенные в диапазон, могут различаться в зависимости от правил сортировки сопоставления.[^] Любой отдельный символ за пределами указанного диапазона ([^ af]) или набора ([^ abcdef]).
WHERE au_lname LIKE 'de[^l]%'
все фамилии авторов начинаются с de и следующая буква не l.источник
ANSI SQL92 :
К сожалению, многие базы данных не придерживаются стандартных правил и не добавляют лишние символы или неправильно включают ESCAPE со значением по умолчанию '\', когда оно отсутствует. Как будто у нас еще недостаточно проблем с '\'!
Здесь невозможно написать независимый от СУБД код, потому что вы не знаете, какие символы вам нужно будет экранировать, а стандарт говорит, что вы не можете избежать того, что не нужно экранировать. (См. Раздел 8.5 / Общие правила / 3.a.ii.)
Спасибо, SQL! gnnn
источник
Вы должны добавить, что вам нужно добавить в SQL Server дополнительное «чтобы избежать существующего»:
кузнец -> кузнец
источник
Sybase:
источник
Возможный ответ для SQL Server
Интересно, что я только что провел тест, используя LinqPad с SQL Server, который должен просто запускать Linq to SQL внизу и генерировать следующий оператор SQL.
Записи .Where (r => r.Name.Contains ("lkjwer --_ ~ []"))
Итак, я еще не тестировал его, но похоже, что потенциально
ESCAPE '~'
ключевое слово может позволить автоматическое экранирование строки для использования в подобном выражении.источник
ESCAPE
потому что это позволяет использовать два символа на экранированный символ (например,%
становится~%
) вместо трех (например, безESCAPE
,%
становится[%]
).