11

如果存在,我将如何编写 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

4 回答 4

26

MySQLSQL ServerPostGresREPLACE特性将删除所有出现的带有空格的 。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 %'

参考

  • 替换- SQL Server
  • 替换- MySQL
  • 替换- PostGres
  • 我在答案中包含了多个数据库服务器,并由于对问题进行了多次编辑而选择和更新
于 2013-01-25T18:20:24.910 回答
1

在 postgres 中,这将是:

select substring(Version from 5 for 3) 
from table
where Version like '%WEB%'
于 2013-01-25T18:20:22.490 回答
0
UPDATE Table
SET Version = Replace(Version, 'Web ','')
WHERE Version LIKE 'WEB %'
于 2013-01-25T18:22:09.747 回答
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
于 2013-01-25T19:57:22.677 回答