Удалите записи с помощью sql ,если оно превышает определенное число с прикрепленной к нему единицей измерения (например, 3 м или 3 см).

#mysql #sql #database #sql-delete

Вопрос:

пусть таблица будет «отель», со столбцом :

hotel_worth
15 М
4 М
8 М
3 М
1 М
2 М
11 М

как удалить записи в таблице с помощью sql ,если их стоимость превышает 3 млн.

Комментарии:

1. Не сохраняя «М» в первую очередь

2. @Strawberry это тестовая практика qn, и это именно то, что я бы тоже сделал. но мне нужно сделать это с помощью «М». и только с помощью sql.вот в чем вопрос.

3. Существуют ли другие значения, кроме «M»?

4. Ну, я бы дал очки ответу, в котором говорилось: «Не храните «М», или, если храните «М», не беспокойтесь о реляционной базе данных».

Ответ №1:

В WHERE предложении DELETE инструкции вы можете преобразовать строку в числовое значение, добавив 0 :

 DELETE FROM hotel
WHERE hotel_worth   0 > 3
 

Если вы хотите удалить только строки с суффиксом M (если есть и другие суффиксы), добавьте:

 AND RIGHT(hotel_worth, 1) = 'M'
 

Ответ №2:

Это можно сделать с помощью:

 DELETE FROM price 
WHERE SUBSTR(`hotel_worth`, 1, LENGTH(`hotel_worth`) - 1)   0 > 3
 

Пояснение: substr функция :

 SUBSTR(`hotel_worth`, 1, LENGTH(`hotel_worth`) - 1)
 

извлекает данные столбца, исключая последний символ ie (от 10 до 10), затем 0 к нему преобразует его в int.

Таким > 3 образом, сравнение в конце в основном означает выбор данных, которые превышают 3 м.

Комментарии:

1. Нет необходимости брать подстроку, а затем добавлять 0. Вы можете сделать это непосредственно со строковым значением столбца.

2. @forpas о , я попробовал это и подумал, что это не сработало, так как я получил предупреждение: #1292 Усек неверное ДВОЙНОЕ значение: «15 м» и т. Д. Поэтому я не потрудился проверить таблицу, моя ошибка . спасибо, урс короткий . но что делает 0 с «3 М». и как выглядит числовое значение , я думал, что оно превратило «3» в 3 .

3. При добавлении 0 в строку MySQL выполняет неявное преобразование строки в число. Полученное число является начальной частью строки, которую можно преобразовать в число. Таким образом, 3 М становится 3, а 100 М становится 100.