SQL select 值然后在子查询中使用替换字符串
SQL select value and then use in sub query to replace string
在我的 sql table 中,我有一些值如下;
<![CDATA[9435547092]]>
<![CDATA[Company Name]]>
大多数行都有 CDATA 换行,我想从所有文件中删除它,所以我认为子查询会很好,例如;
SELECT value FROM attributes WHERE value LIKE "%<![CDATA[%";
会给我每个值,然后我想做
SELECT REPLACE(SELECT value FROM attributes WHERE value LIKE "%<![CDATA[%";, "<![CDATA[", '') FROM attributes
但这是无效的,有人知道这是怎么可能的吗?
这是你想要的吗?
select replace(replace(value, '<![CDATA[', ''), ']]>', '')
请注意,如果您的实际值为 "wraps",那么这可能会影响该值。我认为更通用的方法是:
select (case when value like '<![CDATA[%]]>'
then substr(value, 9, length(value) - 3)
else value
end)
只需在 select 中使用替换即可获得正确的字符串
SELECT replace(value , "<![CDATA[", '')
FROM attributes
WHERE value LIKE "%<![CDATA[%";
如果您需要存储在数据库中,那么您需要更新
UPDATE attributes
set value = replace(value , "<![CDATA[", '')
WHERE value LIKE "%<![CDATA[%";
但您似乎在寻找 LIKE "% 之后的左侧字符串
select right(value, length(value) - locate(value,']]')+2)
from attributes
WHERE value LIKE "%<![CDATA[%";
UPDATE attributes
set value = right(value, length(value) - locate(value,']]')+2)
WHERE value LIKE "%<![CDATA[%";
请试试这个,
SELECT select SUBSTRING(value,10,LEN(value)-12)
FROM attributes
WHERE value like '<![CDATA[%'
如果需要,可以删除 where 子句并按照上面的建议与 CASE 语句一起使用。
在我的 sql table 中,我有一些值如下;
<![CDATA[9435547092]]>
<![CDATA[Company Name]]>
大多数行都有 CDATA 换行,我想从所有文件中删除它,所以我认为子查询会很好,例如;
SELECT value FROM attributes WHERE value LIKE "%<![CDATA[%";
会给我每个值,然后我想做
SELECT REPLACE(SELECT value FROM attributes WHERE value LIKE "%<![CDATA[%";, "<![CDATA[", '') FROM attributes
但这是无效的,有人知道这是怎么可能的吗?
这是你想要的吗?
select replace(replace(value, '<![CDATA[', ''), ']]>', '')
请注意,如果您的实际值为 "wraps",那么这可能会影响该值。我认为更通用的方法是:
select (case when value like '<![CDATA[%]]>'
then substr(value, 9, length(value) - 3)
else value
end)
只需在 select 中使用替换即可获得正确的字符串
SELECT replace(value , "<![CDATA[", '')
FROM attributes
WHERE value LIKE "%<![CDATA[%";
如果您需要存储在数据库中,那么您需要更新
UPDATE attributes
set value = replace(value , "<![CDATA[", '')
WHERE value LIKE "%<![CDATA[%";
但您似乎在寻找 LIKE "% 之后的左侧字符串
select right(value, length(value) - locate(value,']]')+2)
from attributes
WHERE value LIKE "%<![CDATA[%";
UPDATE attributes
set value = right(value, length(value) - locate(value,']]')+2)
WHERE value LIKE "%<![CDATA[%";
请试试这个,
SELECT select SUBSTRING(value,10,LEN(value)-12)
FROM attributes
WHERE value like '<![CDATA[%'
如果需要,可以删除 where 子句并按照上面的建议与 CASE 语句一起使用。