2012-05-16 2 views
2

Прошу прощения, если этот вопрос был задан, прежде чем я просто не смог правильно его формализовать. У меня есть столбец кода в таблице и вы хотите запросить его, но удалить некоторые элементы с определенным кодом. Скажем, я хочу взять элементы с кодом, начиная с 4, но не включать элементы с кодом, 6-е число которого равно 9 (1121290).SQL Query - Как не включать некоторые результаты

В столбце кода содержится строка чисел с максимальной длиной 8 символов. и я хочу взять почти все, что начинается с 4, за исключением элементов, которые начинаются с 411, 427 и 428

+0

Я не знаю, как это сделать. Я новичок на момент использования PostgreSQL, и мой запрос: SELECT * FROM econom_classifier. Код WHERE LIKE '4%' и LENGTH (code) = 8; – tuazku

+0

Покажите нам пример данных, покажите нам свой код, который у вас есть прямо сейчас, более подробно объясните, что вы хотите выбрать, и что вы хотите опустить. Также - пожалуйста, сообщите нам, что ** база данных ** вы используете. SQL - это только структурированный язык запросов, и подобные вещи (обработка строк) могут быть очень специфичными для поставщика. –

+1

домашнее задание кого-нибудь? – Seph

ответ

1

Да, вы можете дать запрос, как это: -

у меня есть элемент колонки с 6 значных кодов.

Я выборка элемента, первый цифра 4 или 6-равно 9.

мы должны использовать % и _ для извлечения ..

SELECT element FROM "table" WHERE element LIKE '%4____9%'; 

попробовать это будет работать.

Все, что начинается с 4, за исключением элементов, которые начинаются с 411, 427 и 428: -

SELECT element FROM "table" WHERE element LIKE '%4__'; 

первая цифра 4 и 6 не 9: Я проверил это один он работает нормально, попробуйте следующее: -

SELECT element 
FROM "table" 
WHERE element NOT LIKE '%_____9' and element LIKE '%4_____' 
+0

, но я не хочу включать элементы, 6-я цифра которых 9 – tuazku

+0

ОК, я понимаю. позвольте мне попробовать –

+0

SELECT 'element' FROM 'table' WHERE' element' LIKE '% 4'; будет включать в себя 411, 427 и 428 – tuazku

0

Предполагая, что ваше поле «CODE» является VARCHAR, и вы используете SQL Server, вы можете использовать ниже Query

select * from yourTable 
where code like '4%' 
AND CHARINDEX('9',code)<>6 
+0

Извините, что не работает, поскольку я использую PostgreSQL – tuazku

+0

@vikii, когда «like» 4% '»означает, что начинается с 4, Пожалуйста, запустите запрос один раз перед downvoting. –

1

Это может быть легче всего просто изложить каждое условие в ИНЕКЕ:

WHERE code like '4____9%' AND code NOT LIKE '411%' AND code NOT LIKE '427%' AND code NOT LIKE '428%' 

Дополнительные условия не будут сильно влиять на эффективность запроса; вам придется сканировать каждую строку, начиная с в любом случае.

+0

Большое спасибо. – tuazku

0

Вот более компактная версия.

`SELECT * FROM table_name WHERE code IN ('4%') and code NOT IN ('411%','427%', '428%','_____9%');`