SQL从值中删除部分文本

时间:2013-01-25 18:12:30

标签: mysql sql

如何编写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

4 个答案:

答案 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 %'

<强>参考

  • REPLACE - SQL Server
  • REPLACE - MySQL
  • REPLACE - PostGres
  • 我在答案中包含了多个数据库服务器,并选择和更新了对该问题进行了多次编辑

答案 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