Я написал запрос, который будет искать column1 в моей таблице A, когда длина записи <8 символов. Запрос обычно такой:
SELECT A.Column1, A.Column2
FROM SCHEMA.A as A
WHERE length(A.Column1) < '8';
Это дает мне все результаты, которые я ожидаю. Теперь я хочу добавить для каждого из этих результатов знак «-» после 4-го символа в каждом результате. Например, если в моем исходном запросе была получена строка со значением column1 1234567, я бы хотел обновить его до 1234-567. Это будет верно для всех возвращаемых строк. Я могу сделать это, используя Java-код, но я надеялся написать сценарий SQL вместо этого, так как это быстрее и не будет выброшен. Я просмотрел различные примеры синтаксиса db2 Update, но ни один из них не показывает, что именно я ищу. Пожалуйста помоги!
2 ответа
Вы можете использовать функция INSERT()
:
UPDATE SCHEMA.A
SET Column1 = INSERT(Column1, 5, 0, '-')
WHERE length(A.Column1) < 8;
Попробуйте сделать это с помощью SELECT
перед обновлением.
Кроме того, length()
возвращает число. Значение сравнения должно быть числом, а не строкой.
Я полагаю, что вы не хотите добавлять символ «-», если длина столбца <4 Пример: 123, вам не нужно 123-, и 1234, а не 1234-, тогда вы должны исправить свое условие where следующим образом:
UPDATE SCHEMA.A
SET Column1 = left(Column1, 4) || '-' || substr(Column1, 5)
WHERE length(Column1) between 4 and 7;
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.