2015-01-29 2 views
3

Использование Как оператора, как получить имя, которое имеющее точные 100 символовSQL, как команда

Примечание: Я не хочу использовать 100 символов подчеркивания _ Ex:

select ename from emp where ename like '_____________'; 

он не должен как выше есть ли другой способ

+2

Непонятно, что вы просите. добавьте некоторые примеры данных. Какую СУБД вы используете? – Jens

+0

Зачем вам нужно выражение Like? вы должны использовать Как только, когда вы хотите найти конкретную подстроку в другой строке. Используйте функцию Лен(), чтобы получить точный счет –

+0

на самом деле это не более 100 символов и выше 100 или выше или 500 символов, и, наконец, то, что мне нужно, выше 500 означает, что мы должны упомянуть 500 подчеркиваний, а затем% – ramana

ответ

2

Для ровно 100 символов, сделать

select ename from emp where LEN(ename)=100 

Для получения более равной 100 символов

select ename from emp where LEN(ename) >= 100 
+1

@MahmoudGamal _ - это символ подстановки, указывающий на любой символ –

+0

Для соответствия символу подчеркивания вам нужно избегать его 'select ename from emp где LEN (ename) = 100 и ename like '% [_]%' –

+0

'% [_] % 'будет соответствовать строкам, в которых есть' [', за которым следует любой символ, за которым следует'] 'в любом месте. В (стандартном) SQL '' '' не имеет особого значения для оператора 'LIKE'. –

0
select ename from emp where LEN(ename)=100 and ename like '%_%'; 

LEN используется для длины значения и% до и после символа означает любую строку, которая содержит по крайней мере один _

более, что Рудные равно 100

select ename from emp where LEN(ename)>=100 and ename like '%_%'; 
+0

. Я поступил неправильно, это не совсем 100 символов, это 100 символов и выше – ramana

+0

отредактировали ans соответственно, пожалуйста, примите его –

0

Вы можете использовать следующие:

WHERE column_name REGEXP [a-z0-9]{100} 
+1

Only если OP использует MySQL. Oracle будет лучшим предположением - 'emp' - это имя таблицы, встречающееся в образцах Oracle. –

+0

@PanagiotisKanavos: в Oracle это будет 'regexp_like' –

0

Многие СУБД поддерживают функцию REPEAT (не ANSI, однако ...)

select ename from emp where ename like repeat('_',100) 

Или используйте CHAR_LENGTH:

select ename from emp where CHAR_LENGTH(ename) = 100 
0

Я не совсем уверен, что СУБД вы используете, это должны работать в MySQL:

select ename from emp where ename like concat('%', REPEAT('_',100),'%'); 

выше условия, где строка имеет 100 UNDERSCORE ли в начале, middl e или конец строки. При условии, что строка точно соответствует 100 UNDERSCORE:

select ename from emp where ename = REPEAT('_',100);