T-Sql Like Dilemma - выбор строк по ключевому слову - PullRequest
1 голос
/ 10 февраля 2011

Это продолжение моего (другого) глупого вопроса, который я задал сегодня

У меня есть сохраненный процесс в SQL Server, который должен выбирать определенные строки на основе ключевого слова,например:

@Key varchar(5) = 'a'

select * From Products where ProductName like 'a%'

теперь @Key может содержать значения, такие как 0-9 и XYZ, кроме всех других обычных символов от A, B до W

, поэтому, когда @Key равен XYZ, ему нужно выбрать все продукты, которые начинаются с букв X, Y, ИЛИ Z, а когда 0-9, он должен выбрать любые продукты, начинающиеся с цифр.

, так что теперь у меня есть это:

WHERE
(@Key='xyz' and (name like 'x%' or name like 'y%' or name like 'z%'))
or name LIKE @Keyword +'%'

и теперь, чтобы получить прок для получения номеров, я должен сделать что-то похожее на XYZ, но включающее name like '0%' or name like '1%' десять раз.

Конечно, должен быть лучший способ попросить SQL Server выбирать с именами, начинающимися с десятичной?

это единственный способ сделать это?

спасибо.

извините, если я задаю слишком много вопросов!

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Оператор LIKE также позволяет использовать подстановочные знаки в одном символе, например,

SELECT...
WHERE foo LIKE '[0-9]%'

вернет значения, где foo начинается с цифры.

Аналогично,

SELECT...
WHERE foo LIKE '[aeiou]%'

вернет значения там, где foo начинается с гласной.

Проверьте документацию на LIKE - есть еще несколько хитростей ...

2 голосов
/ 10 февраля 2011

Вы можете использовать

name like '[0-9]%'

Для другого сценария вы можете использовать

name like '[x-z]%'

или

name like '[xyz]%'

В сопоставлении без учета регистра последние 2 эквивалентны. Однако они не одинаковы в сопоставлении с учетом регистра ([x-z]% будет соответствовать «Йогурту», ​​тогда как [xyz]% не будет)

...