如何编写SQL以从记录值中删除一些文本(如果存在)。
Version Column data
------------------
WEB 1.0.1
WEB 1.0.1
1.0.2
1.0.2
我想更新包含“WEB”的所有记录并删除该文本,但保留其余部分“1.0.1”。
到目前为止,我有Select * from table
。
数据库是MySQL 5.5.25
答案 0 :(得分:18)
MySQL , SQL Server 和 PostGres 的REPLACE
功能将删除所有出现的WEB
一片空白。
<强>选择强>
SELECT REPLACE(Version, 'WEB ', '') FROM MyTable
<强>更新强>
UPDATE MyTable SET Version = REPLACE(Version, 'WEB ', '')
或
UPDATE MyTable SET Version = REPLACE(Version, 'WEB ', '') WHERE Version LIKE '%WEB %'
<强>参考强>
答案 1 :(得分:1)
在postgres中,这将是:
select substring(Version from 5 for 3)
from table
where Version like '%WEB%'
答案 2 :(得分:0)
UPDATE Table
SET Version = Replace(Version, 'Web ','')
WHERE Version LIKE 'WEB %'
答案 3 :(得分:0)
这是另一个应该适用于任何SQL的示例,因为使用的函数是ANSI SQL标准。此示例假定单词“WEB”和第一个数字之间存在空格。但它可以改善。我认为这是更通用的方法,然后硬编码subtr的开始和结束位置:
SELECT TRIM(SUBSTR('WEB 1.0.1', INSTR('WEB 1.0.1', ' ') ) ) as version
FROM dual;
SQL>
VERSION
-------
1.0.1