У меня есть процедура, которая обновляет table1
некоторыми значениями table 2
. Мне нужно проверить, содержит ли одно из конкретных полей (возраст) более двух цифр.
table 2
code name age
1 jose 21
2 peter 36
3 jhon 50
4 charlie 021
Когда процедура запускается, она выдает ошибку, потому что значение возраста поля charlie table1
имеет более двух цифр.
Мне нужен запрос для проверки значения перед ОБНОВЛЕНИЕМ; если поле возраста состоит из 3 цифр, удалите первую и передайте значение из 2 цифр. Пример:
code name age
3 charlie 021
Чтобы :
code name age
3 charlie 21
А потом сделаю процедуру.
Я использовал этот запрос, чтобы узнать длину поля
SELECT age, LENGTH(TRIM(table2.age)) FROM table2;
age LENGTH(TRIM(table2.age))
21 2
36 2
50 2
021 3
2 ответа
Вам нужно использовать метод SUBSTRING ('Sakila', -2), чтобы получить последние две цифры с длиной> 2.
ВЫБЕРИТЕ СЛУЧАЙ, КОГДА length (trim (age))> 2 THEN SUBSTRING (age, -2) ELSE age END;
Без всяких условий -
ВЫБЕРИТЕ SUBSTR (возраст, -2) из таблицы;
substr
не substring
. Я не уверен, что оператор CASE
что-то делает - почему бы не вызывать substr
каждый раз? Я сомневаюсь, что вы получите какую-либо эффективность, вычисляя длину каждый раз, а не всегда беря последние два символа.
Вы можете попробовать это:
SELECT id, to_char(table1.age,'FM90') age FROM table1;
Примечание. Приведенный выше запрос будет работать, только если table1.age слева будет добавлен 0, например:
021 или 0021 и так далее.
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.
right(age,2)
... А как насчет возраста 100 лет и старше? Я бы предложил хранить их как целые числа, и тогда у вас не было бы этой проблемы.