Поиск строки в столбце

Мне нужно показать результаты из этого столбца, где столбец Product_name содержит «Документация» или «документация» в результате. Запрос должен возвращать результат независимо от того, написано ли слово строчными или прописными буквами.

https://i.stack.imgur.com/bjLuY.png

SELECT UPPER(PROD_NAME)as PROD_NAME, LENGTH(PROD_NAME) as PROD_NAME_LEN
FROM PRODUCTS 
WHERE (PROD_NAME like '%Documentation%'
 or PROD_NAME like '%DOCUMETATION%')
 and LENGTH(PROD_NAME) <= 35
    order by 2 DESC;

Я нашел это решение, любые предложения

Отвечает ли это на ваш вопрос? БД Oracle: как написать запрос без учета регистра?

Jonas Metzler 05.11.2022 15:10

Если вы удивлены, что запрос не вернул ни одного совпадения в верхнем регистре: в '%DOCUMETATION%' есть пропущенный знак N.

Thorsten Kettner 06.11.2022 13:05

И просто общее замечание, которое не имеет ничего общего с вашим вопросом: я вижу, что вы пытаетесь сделать свой запрос доступным, используя верхний и нижний регистр. Но нет последовательности. Некоторые ключевые слова в нижнем регистре (as, like, or, ...), некоторые в верхнем регистре (SELECT, UPPER, FROM). Будьте последовательны, т.е. иметь все ключевые слова в верхнем регистре и все имена в нижнем регистре (SELECT UPPER(prod_name) AS prod_name, LENGTH(prod_name) AS prod_name_len ...).

Thorsten Kettner 06.11.2022 13:09
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
52
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий
SELECT UPPER(PROD_NAME)as PROD_NAME, LENGTH(PROD_NAME) as PROD_NAME_LEN
FROM PRODUCTS 
WHERE lower(PROD_NAME) like '%documentation%'
 and LENGTH(PROD_NAME) <= 35
    order by 2 DESC;

Когда я использую PHP с MySQL, я лично использую что-то вроде:

$setgeneral=$db->prepare("SELECT * FROM general where general_id=:general_id");
$setgeneral->execute(array('general_id' => 0));
$getgeneral=$setgeneral->fetch(PDO::FETCH_ASSOC);

Этот код берет "общую" таблицу и выводит строку/строки с общим_идентификатором=0. Ну, это не только для id. Вы также можете использовать его для prod_name!

Это не имеет отношения к заданному ОП вопросу.

OldProgrammer 05.11.2022 15:08

Если вы хотите получить исходное PROD_NAME, как оно есть в таблице, не используйте UPPER в предложении select...

SELECT PROD_NAME as PROD_NAME, LENGTH(PROD_NAME) as PROD_NAME_LEN
FROM PRODUCTS 
WHERE LOWER(PROD_NAME) like '%documentation%'
      -- UPPER(PROD_NAME) like '%DOCUMENTATION%' - instead of LOWER(), you can do it this way too - same result
      And LENGTH(PROD_NAME) <= 35
ORDER BY 2 DESC;

С уважением...

Другие вопросы по теме