2013-06-18 2 views
0

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

я попробовал

select name from employee where name not like '% %' 

это работает, но мне интересно, если есть это другие способы сделать это, используя SQL подстановочные знаки

примечание: я студент колледжа, сейчас изучаю подстановочные знаки. Мне было просто интересно, есть ли другие способы показать данные, содержащие только одно слово с подстановочными знаками, кроме указанных выше.

+0

Какова ваша конечная цель запроса? Этот поиск может быть очень медленным, если вы просматриваете множество записей. – itsols

+0

Моя цель была только для изучения подстановочных знаков sql. –

+0

Вы должны взять идею Gedrox. Вот что я сделал бы :) – itsols

ответ

1

Ваш метод делает правильное использование подстановочных знаков, в качестве альтернативы вы можете сделать это с CHARINDEX или аналогичной функции в зависимости от РСУБД

select name 
from employee 
where CHARINDEX(' ',name) = 0 

Аналогично функция PATINDEX или подобные маски используют, но это в значительной степени так же, как CHARINDEX, просто позволяет создавать шаблоны, поэтому, если вы ищете несколько пространств, это будет полезно. Я не думаю, что есть много способов отклонения от вашего метода для использования подстановочных знаков.

+0

@projek Это тоже полезная техника, так как вы только учитесь. Но для действительно больших наборов записей это может быть довольно медленным. Возможно, вы должны создать индекс, используя этот метод. – itsols

+0

спасибо, но я знаю, как это сделать с charindex, я просто задавался вопросом, могу ли я сделать это с помощью подстановочных знаков, но с другим способом. –

2

Если у вас есть большая база данных, я бы предложил создать новый индексный столбец word_count, который будет автозаполнен вставкой/обновлением вызывать. Таким образом, вы сможете более эффективно выполнять поиск таких записей.

+0

+1 для этого. Идея состоит в том, чтобы сделать это быстрее. – itsols

0

Так я сделал бы это с помощью подстановочных знаков. Другой способ:

select name 
from employee 
where charindex(' ', name) = 0 
Смежные вопросы