2015-07-31 2 views
5

Я унаследовал базу данных и приложение от проекта, и я пытаюсь отладить проблему с запросом базы данных.Что означает LIKE '[atoz: a]%' в SQL Server?

Там есть строка в запросе, который гласит:

WHERE property_title LIKE '[atoz:a]%' 

Я изо всех сил, чтобы понять, что делает команда ATOZ, как я никогда не попадался раньше - я предположил, что это было о том, что было бы только некоторые символы в заголовке, но некоторые из названий содержат символы, такие как() или -

Я попытался найти его в Google, но я должен использовать неправильную терминологию, поскольку ничего не появляется. Если бы кто-нибудь мог объяснить это мне или указать мне на ресурс, который был бы замечательным!

Благодаря

ответ

3

Это только часть LIKE operator of T-SQL:

[ ]
Any single character within the specified range ([a-f]) or set ([abcdef]).
WHERE au_lname LIKE '[C-P]arsen' finds author last names ending with arsen and starting with any single character between C and P, for example Carsen, Larsen, Karsen, and so on. In range searches, the characters included in the range may vary depending on the sorting rules of the collation.

Точное выражение вы видите:

'[atoz:a]%' 

в основном означает, что это:

  • Первый любой aracter, что может быть один из следующих:
    • a, t, o, z или :
  • Затем следуют ничего (даже ничего)

Обратите внимание, что atoz делает не означает любой символ от a до z, это буквально означает 4 символа a , t, o и z. Чтобы получить любого персонажа от a до z, вы использовали бы [a-z]. Второй a в выражении является избыточным, так как [aa] означает то же, что и [a].

+2

Так что это ошибка ... '[atoz: a]' '' a' повторяется дважды ... и набор символов 'a, t, o, z,:' * is * a немного странно .... – xanatos

+0

Ну, это не повредит, но это тоже ничего не поделает. –

+0

@xanatos. , , Второй «а» может быть избыточным, и это может быть логическая ошибка, но это не ошибка запроса: http://www.sqlfiddle.com/#!6/9eecb7d/499. –

4

Это поиск property_title, который начинается с букв «a», «t», «o», «z» и «:». Второй «а» является избыточным.

Я предположил бы, намерение на самом деле:

WHERE property_title LIKE '[a-z]%' 

, который будет указано, что права собственности начинается с буквы (или строчной буквы, в зависимости от сортировки используется).

Смежные вопросы