将查询从mssql转换为postgresql

u91tlkcl  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(410)

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

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)
kqhtkvqz

kqhtkvqz1#

考虑:

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

这就产生了 bit 的价值 1 如果 username 不包含任何数字,否则 0 .
注意postgres支持 boolean 数据类型,在这里可能更有意义。这也将简化查询:

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

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

相关问题