【发布时间】:2017-03-20 09:54:07
【问题描述】:
我必须从表中获取 MSISDN 的 1 列。
结果如图所示,
在某些行中,每次不相同时它都会返回类似 nt&'gt;1 的字符串。
如果发生这种情况,我想将列设置为空白而不删除行。
【问题讨论】:
标签: sql oracle oracle11g oracle10g
我必须从表中获取 MSISDN 的 1 列。
结果如图所示,
在某些行中,每次不相同时它都会返回类似 nt&'gt;1 的字符串。
如果发生这种情况,我想将列设置为空白而不删除行。
【问题讨论】:
标签: sql oracle oracle11g oracle10g
您可以使用 SQL 中的 CASE 语句解决此问题
SELECT CASE WHEN MSISDN = 'nt>1' THEN '' ELSE MSISDN END AS MSISDN
【讨论】:
您可以比较字符串,也可以使用LIKE 运算符。一些选项是:
SELECT CASE
WHEN MSISDN = 'nt>1' THEN NULL -- match nt>1;
WHEN MSISDN LIKE '%>%' THEN NULL -- match > anywhere in the string
WHEN LOWER( MSISDN ) LIKE '%<%' THEN NULL -- match < ignoring case
WHEN MSISDN LIKE '%&%;%' THEN NULL -- match & followed later by ;
ELSE MSISDN
END AS parsed_msisdn
FROM your_table
【讨论】:
select case
when REGEXP_LIKE(MSISDN, '[A-Za-z]') then null
else MSISDN
end as MSISDN
from MyTable
【讨论】:
^ 留在了测试中......我的错
使用 REPLACE String 函数替换您的特定字符串:
SELECT REPLACE(Your_columnName,'nt&''gt;1','')
FROM Your_table
【讨论】: