Sql 更新前两个字母或标记为空(如果为空)

Sql 更新前两个字母或标记为空(如果为空),sql,postgresql,Sql,Postgresql,强制更新首字母(如果存在),否则将其标记为空 IF LENGTH([Column])>0 THEN UPDATE [Table] SET Position = Upper([Column]) ELSE RETURN NULL END IF; cola abcdef 德夫吉 efgijg '' 埃尔勒夫 '' ijkmnk 预期结果(前两个为大写,如果行值为空,则标记为null) cola ABcdef 德夫吉 EFgijg 无效的 埃尔勒夫 无效的 IJkmnk 您可以使用SET部分中

强制更新首字母(如果存在),否则将其标记为空

IF LENGTH([Column])>0 THEN UPDATE [Table] SET Position = Upper([Column]) ELSE RETURN NULL END IF;
cola
abcdef
德夫吉
efgijg
''
埃尔勒夫
''
ijkmnk
预期结果(前两个为大写,如果行值为空,则标记为null)

cola
ABcdef
德夫吉
EFgijg
无效的
埃尔勒夫
无效的
IJkmnk

您可以使用SET部分中的
CASE
表达式执行此操作

UPDATE the_table
  SET column_a = CASE 
                   WHEN column_a = '' THEN NULL
                   ELSE upper(left(column_a,2))||substr(column_a,3)
                 END;

如果您想将只有空格的值也视为“空”,则可以在修剪(列a)=“”时使用
,然后使用NULL

那么,问题是什么,您迄今为止尝试了什么?如果长度([column])>0,则更新[Table]SET Position=Upper([column]),否则返回NULL END If;