#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.