2012-07-04 2 views
0

если у вас естьКак найти счетчик пробелов в значениях столбцов?

e_id ename 
1 hansen sahul 
2 dennis richard rathore 

как найти количество Ename из e_id 1, как? 2

Как найти количество ename e_id 2 как? 3

+2

Пожалуйста объяснить ,, –

+0

Какой систему базы данных? –

+1

Такая таблица не соответствует 1NF и должна быть нормализована. – vyegorov

ответ

0

К сожалению, функции манипуляции строками различаются между базами данных, поэтому я могу дать диалоги SQL Server. Если вы используете другую базу данных, вы должны найти замену для LEN и REPLACE:

declare @Names table (e_id int,ename varchar(3000)) 
insert into @Names (e_id, ename) values 
(1,'hansen sahul'), 
(2,'dennis richard rathore') 

select e_id,LEN(ename) - LEN(REPLACE(ename,' ','')) + 1 as namecount 
from @Names 

Результат:

e_id  namecount 
----------- ----------- 
1   2 
2   3 

Это работает быть вычисление разницы в длине между простой строкой , и ту же строку, где были удалены пробелы. Это логически эквивалентно количеству пробелов в строке. Затем мы добавляем 1 в соответствии с вашим желаемым результатом (количество имен, а не количество пробелов).

(Настройка таблицы также говор, но только там, чтобы помочь создать рабочий сценарий)

+0

Если возможно, сначала нужно канонизировать пробел (как будет зависеть от вашей РСУБД), так что вы не получите плохих результатов, если у вас было два пробела или пробел в начале или конце. –

+0

@ctrahey - Да, также могут потребоваться многие другие операции очистки (например, могут быть другие символы пробелов, а не просто пробелы). OTOH, может быть, нам повезло, и у OP уже есть хорошее ограничение 'CHECK', предотвращающее появление таких значений в таблице. :-) –

+0

ya это работает спасибо – user1500707

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