将查询从MSSQL转换为PostgreSQL



如果UserName只有数字,则此查询将更新一列。

UPDATE [dbo].[MyTable]
SET [MyColumn] = CAST(CASE 
WHEN UserName LIKE '%[^0-9]%'
THEN 0
ELSE 1
END AS BIT)

我需要将其重新翻译为postgreSql。它一定是类似于这个的东西

UPDATE "MySheme"."MyTable"
SET "MyColumn" = CAST(CASE 
WHEN "UserName" LIKE '%[^0-9]%'
THEN 0
ELSE 1
END AS BIT)

考虑:

update mytable
set mycolumn = (username !~ 'd')::int::bit 

如果username不包含任何数字,则生成1bit值,否则为0

请注意,Postgres支持boolean数据类型,这在这里可能更有意义。这也只是一个简单的查询:

update mytable
set mycolumn = (username !~ 'd')

请注意,我没有引用标识符。引用的标识符通常不会增加任何值,并且会使查询变得不必要地冗长——我建议您在设置中避免使用它们。

最新更新