Sql 替换时间戳列中的多个字符串值
我有两列,我想用空字符串替换字符串“X”和“NULL”。我不知道如何在时间戳列中进行多次替换,请输入 数据: 预期产出:Sql 替换时间戳列中的多个字符串值,sql,oracle,Sql,Oracle,我有两列,我想用空字符串替换字符串“X”和“NULL”。我不知道如何在时间戳列中进行多次替换,请输入 数据: 预期产出: sv exp kdeh 2012-04-07 hef jfrro jdz jfej 2011-04-07 我的查询仅用空行替换空字符串 cast("sv" as integer) AS sv, to_localdate('
sv exp
kdeh 2012-04-07
hef
jfrro
jdz
jfej 2011-04-07
我的查询仅用空行替换空字符串
cast("sv" as integer) AS sv,
to_localdate('yyyy-MM-dd', substring(replace("exp", 'NULL', ''), 0, 10)) as exp
from x_table
一个
case
表达式怎么样
(case when regexp_like(exp, '^[0-9]{4}-[0-9]{2}-[0-9]{2}$' then exp
else <alternate value>
end)
(当regexp_类似于(exp,^[0-9]{4}-[0-9]{2}-[0-9]{2}$”时,则exp
其他的
(完)
尝试进行基本更新,将字符串文字X
和NULL
值替换为SQL NULL:
UPDATE yourTable
SET exp = NULL
WHERE exp IN ('X', 'NULL');
作为选择,您可以尝试:
SELECT
sv,
CASE WHEN exp NOT IN ('X', 'NULL') THEN exp END AS exp
FROM yourTable;
X
和NULL
的替换值是什么?我想用空值替换X和NULL。我不想更新现有表。我想将其包含在cast语句中,因为我正在创建一个新视图,该视图必须用空值替换这些值。因为我说过我正在尝试创建一个新视图,请检查更新表中日期的格式。如果没有替换子字符串,它只会给我一个包含TZ的日期。很抱歉之前不清楚。虽然此代码可能会解决问题,但包括如何解决问题以及为什么解决问题的代码将真正有助于提高您的帖子质量。
SELECT
sv,
CASE WHEN exp NOT IN ('X', 'NULL') THEN exp END AS exp
FROM yourTable;
to_localdate('yyyy-MM-dd', substring(replace(replace("exp", 'NULL', ''),'X','') 0, 10)) as exp
from "x_table";