【发布时间】:2013-10-27 13:16:48
【问题描述】:
我正在使用
SELECT REPLACE(REPLACE(Status,'O','New'),'C','Closed') as STATUS,
在 Oracle SQL 中选择
问题是我的桌子有两个: 'C' 和 '关闭'
所以它实际上是用“Closed”替换“C”,用“Closedlosed”替换“Closed”
如何仅在整个字段匹配时才替换它?
【问题讨论】:
我正在使用
SELECT REPLACE(REPLACE(Status,'O','New'),'C','Closed') as STATUS,
在 Oracle SQL 中选择
问题是我的桌子有两个: 'C' 和 '关闭'
所以它实际上是用“Closed”替换“C”,用“Closedlosed”替换“Closed”
如何仅在整个字段匹配时才替换它?
【问题讨论】:
一种可能的解决方案是使用正则表达式仅匹配 C 字符,而不匹配其他字符:
WITH
my_data AS
(SELECT 'Closed' AS status FROM dual
UNION ALL SELECT 'C' AS status FROM dual)
SELECT
regexp_replace(status, '^C$', 'Closed') AS rep_status
FROM
my_data
;
在 SQLFiddle 检查:http://sqlfiddle.com/#!4/d41d8/19247
你能提供样本数据吗?
【讨论】: