2015-10-21 2 views
0

Мне нужно SELECT все строки, где column1 не имеет указаний 0. column1 имеет тип данных String.Получить все строки, которые не имеют нулевого нуля

column1 


0987654321 
2345567887 
0233445566 
3422245666 
+4

Какой тип данных? – jarlh

+1

Можете ли вы показать нам, что вы сделали до сих пор? – Marusyk

+2

и какие dbms вы используете? – SomeJavaGuy

ответ

7

ANSI SQL Ответ:

select * from tablename 
where substring(column1 from 1 for 1) <> '0' 

Некоторые СУБД имеют SUBSTR(column1, 1, 1) вместо этого, или LEFT(column1, 1).

+1

OP, обратите внимание, что «SELECT *' - это плохая практика - вы должны «ВЫБРАТЬ» только столбцы, которые вы хотите отобразить. (Плакат этого ответа не знает, какие столбцы у вас настолько корректно дефолтны на 'SELECT *') – Eilidh

0

Я предполагаю, вы говорите о символьном поле, как числовое поле не будет отображаться с ведущими 0, если только вы не форматировать его ... все равно

для символьного поля вы бы выбрать ...

WHERE column1 NOT LIKE '0%' 

в случае числового поля вы можете выбрать ...

WHERE column1 >= 1000000000 
+1

Двойные кавычки для идентификаторов. Одиночные кавычки для строковых литералов. – jarlh

+0

yeep ... и перепрограммировать «нет» до нулевого нуля ... ой! – MikeD

+0

здесь ведет ноль, поэтому поле будет в varchar не числовым –

0

Есть несколько способов для того чтобы достигнуть этого. Вот три примера работы для dbms oracle (я не знаю ваших dbms).

-- using substr 
select * from 
(select '0123' t from dual union 
select '123' t from dual union 
select '5123' t from dual union 
select '413123' t from dual union 
select '0454' t from dual) tab 
where substr(tab.t,0,1) != 0; 
-- using regex 
select * from 
(select '0123' t from dual union 
select '123' t from dual union 
select '5123' t from dual union 
select '413123' t from dual union 
select '0454' t from dual) tab 
where regexp_like(tab.t,'^[^0]'); 
-- using the like operator 
select * from 
(select '0123' t from dual union 
select '123' t from dual union 
select '5123' t from dual union 
select '413123' t from dual union 
select '0454' t from dual) tab 
where tab.t not like '0%'; 
-1

Ну, вам нужно проверить, равен ли первый символ нулю или нет. Используйте SUBSTR.

SELECT COLUMN FROM TABLE WHERE SUBSTR(COLUMN,1,1) <> '0'; 
+0

Я думаю, что вы не правы. Мы не знаем, что такое rdbms. Итак, ваш ответ неверен, потому что для примера MSSQL Server не имеет функции 'SUBSTR' – Marusyk

0

вопрос ответа, но вы также можете попробовать

SELECT LEFT(column1, 1) AS firstLetter 
FROM <table> 
WHERE colum1 => 1 

Он прекрасно работает со строками.