将查询从MSSQL转换为PostgreSQL

将查询从MSSQL转换为PostgreSQL,sql,postgresql,sql-update,case,Sql,Postgresql,Sql Update,Case,如果用户名只有数字,此查询将更新一列 UPDATE [dbo].[MyTable] SET [MyColumn] = CAST(CASE WHEN UserName LIKE '%[^0-9]%' THEN 0 ELSE 1 END AS BIT) 我需要将其重新传输到postgreSql。一定是这样的 UPDATE "MySheme"."MyTable&qu

如果用户名只有数字,此查询将更新一列

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 
如果
用户名
不包含任何数字,则生成
1
,否则
0

请注意,Postgres支持
boolean
数据类型,这在这里可能更有意义。这也将简化查询:

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

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

与MSSQL不同,PostgreSQL有一个布尔数据类型,您通常会使用它来代替bit。然后,您可以直接将其指定为true或false,而无需进行任何转换。如果你真的想用一点然后像这样施展<代码>然后0::位其他1::位