Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 替换时间戳列中的多个字符串值_Sql_Oracle - Fatal编程技术网

Sql 替换时间戳列中的多个字符串值

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('

我有两列,我想用空字符串替换字符串“X”和“NULL”。我不知道如何在时间戳列中进行多次替换,请输入

数据:

预期产出:

        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";