Помощь новичку

zek24

Мой дом здесь!
Команда форума
Модератор
Регистрация
14 Ноя 2009
Сообщения
811
Реакции
310
  • Автор темы
  • Модер.
  • #1
Привет, только вчера начал изучать SQL по одной книге, и уже столкнулся с непонятным.
Пишу в MSAccess следующий код

SELECT *
FROM Customers
WHERE cust_contact LIKE '[!JM]*'
ORDER BY cust_contact;


Все работает- выводятся данные, которые начинаются не с J и не с M.

Теперь пытаюсь написать тоже используя ключевое слово NOT

SELECT *
FROM Customers
WHERE NOT cust_contact ='[JM]*'
ORDER BY cust_contact;


Но в результате выводится все данные таблицы. Уже более часа пытаюсь понять почему NOT не хочет работать в паре с [].

В этом случае

SELECT *
FROM Customers
WHERE NOT cust_contact ='J*'
ORDER BY cust_contact;


также выводятся все данные.
Подскажите, как правильно написать код.
Спасибо.
 
  • Автор темы
  • Модер.
  • #3
Да вот только что сам нашел в анг. варианте книги - наши издатели поленились лишний абзац вставить.
Зато надолго запомню)

Уточню = используют при точном поиске\сравнении, а LIKE при неточном (__ и %)?
 
  • Автор темы
  • Модер.
  • #4
Новый день, новая учеба и новые вопросы.

Прохожу сейчас манипуляцию над тестом. Задался вопросом, как выбрать только те строки, которые начинаются с большой(маленькой) буквы?

SELECT vend_name
FROM Vendors
WHERE vend_name LIKE UCASE(?)
ORDER BY vend_name;

В ответ: "Введите значение параметра ?".
За пол-часа меня так и не осенило, вот и решил уточнить.
Подскажите.
Спасибо.

По ходу обучения возник еще вопрос о подзапросах, точнее о том, как их лучше писать для дальнейшего легкого чтения, и не путаться во вложениях.
Практикуюсь в Access, а там, как я понимаю комментарии отсутствуют. Что подскажете?
 
Задался вопросом, как выбрать только те строки, которые начинаются с большой(маленькой) буквы?
Функция UCASE - переводит строку в верхний регистр. она явно не подойдет.
тут другое условие:
SELECT vend_name
FROM Vendors
WHERE vend_name LIKE '[A-Z]*'
ORDER BY vend_name;
 
  • Автор темы
  • Модер.
  • #6
как удалить разный текст из всех строк столбца

Подскажите, как удалить разный текст из всех строк столбца, который(текст) находиться между двумя повторяющимися сочетаниями знаков. В PHPMyAdmin - mySQL.
Пример:
левое повторяющееся сочетание - ЛПС
Правое повторяющееся сочетание - ППС
Текст, который нужно удалить - ТНУ
какой-то текст... ЛПС... ТНУ1...ППС...какой-то текст
какой-то текст... ЛПС... ТНУ2...ППС...какой-то текст
какой-то текст... ЛПС... ТНУ3...ППС...какой-то текст
какой-то текст... ЛПС... ТНУ4...ППС...какой-то текст
...
какой-то текст... ЛПС... ТНУn...ППС...какой-то текст
?
 
Как удалить не сообразила, но я сделала подобное длинный способ (через задницу, но все-таки)

создать таблицу из запроса

SELECT id,
CONCAT( MID(pole,1, POSITION('ЛПС' IN pole) +3),
MID(pole,LOCATE('ППС', pole,1) ,
(LENGTH(pole)-LOCATE('ППС', pole,1))))
FROM base where
POSITION('ЛПС' IN pole) >0 and LOCATE('ППС', pole,1) > 0


оно как раз выберет текст в поле как надо, а потом обновить старую таблицу, где совпадают id
 
Назад
Сверху