如果存在,我将如何编写 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
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 %'
参考
在 postgres 中,这将是:
select substring(Version from 5 for 3)
from table
where Version like '%WEB%'
UPDATE Table
SET Version = Replace(Version, 'Web ','')
WHERE Version LIKE 'WEB %'
这是另一个适用于任何 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