Size: a a a

2021 July 05

JF

Jane Frankenstein in sql_ninja
update saved_filters_test_2 set filter = jsonb_set(filter, '{kg}', array_replace(filter->>'{kg}', stg_updates_eu.old_name::text, stg_updates_eu.new_name::text)) from stg_updates_eu where stg_updates_eu.account_id = saved_filters_test_2.account_id
источник

JF

Jane Frankenstein in sql_ninja
function array_replace(text, text, text) does not exist
источник

JF

Jane Frankenstein in sql_ninja
в этом проблема
источник

JF

Jane Frankenstein in sql_ninja
не то в функцию передаю
источник

ДT

Дмитрий Texnix... in sql_ninja
попробуй filter->>'{kg}' преобразовать в массив
источник

JF

Jane Frankenstein in sql_ninja
спасибо, попробую, сижу думаю как сделать
источник

g

greeninsania in sql_ninja
Привет!
А как красиво сделать условие:
If @p1 is not null or @p2 is not null ... Or @pn is not null?
источник

g

greeninsania in sql_ninja
Параметры разного типа
источник

TS

Tim Safari in sql_ninja
возможно, подойдет так:
объявляешь табличку с параметрами, для столбца ставишь тип sql_variant

https://docs.microsoft.com/ru-ru/sql/t-sql/data-types/sql-variant-transact-sql?view=sql-server-ver15
источник

g

greeninsania in sql_ninja
Ага, тоже только этот вариант пришёл на ум)
засомневался в целесообразности такого подхода)
источник

DI

Dmitriy Ivanov in sql_ninja
Coalesce (@p1,@p2,@p3,....) Is not null
источник

AR

Andrey Rumanec in sql_ninja
+
источник

N

Ninja Reputation in sql_ninja
Репутация @LuckyDima: 12
источник

g

greeninsania in sql_ninja
Среди параметров варчар, дата, инт, опасался, как бы не выстрелила ошибка конвертации
источник

DI

Dmitriy Ivanov in sql_ninja
Функция поддерживает выражения любого типа.
источник

g

greeninsania in sql_ninja
Если разбивать разбивать параметры по типам и делать несколько coalesce, то будет ещё хуже, если смешать все параметры в одном coalesce, возможно для всех будет неявная конвертация в тип данных первого указанного параметра (такое поведение характерно толи для isnull, толи для coalesce, не помню точно).
источник

g

greeninsania in sql_ninja
Оставил списком через or) просто и понятно)
источник

DI

Dmitriy Ivanov in sql_ninja
Это называется не читал, но осуждаю.
Вы понимаете,что значит любой тип?
Это значит, вы можете запихнуть туда все что пожелаете.
Почитайте пожалуйста в документации как это работает.
источник

g

greeninsania in sql_ninja
Вашу мысль я, возможно, не понял, но тут я получу ошибку, о чем я и говорю:
declare @p1 int, @p2 varchar(10), @p3 date, @p4 varchar(255);
select coalesce(@p1, @p2, @p3, @p4)
источник

DI

Dmitriy Ivanov in sql_ninja
А если вынесете тип даты, то тоже получите ошибку?
Вот вам в помощь:
https://docs.microsoft.com/ru-ru/sql/t-sql/data-types/data-type-conversion-database-engine?view=sql-server-ver15
источник