11

How would I write the SQL to remove some text from the value of records if it exists.

Version Column data
 ------------------  
WEB 1.0.1  
WEB 1.0.1  
1.0.2  
1.0.2  

I would like to update all records that contain "WEB " and remove that text but leave the rest, "1.0.1".

So far I have Select * from table.

Database is MySQL 5.5.25

4

4 に答える 4

26

MySQLSQL Server、およびPostGresREPLACE機能により、すべての出現箇所が空白で削除されます。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
  • 回答に複数のDBサーバーを含め、質問をいくつか編集したため、選択して更新しました
于 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

使用される関数はANSISQL標準であるため、どの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 に答える
0
UPDATE Table
SET Version = Replace(Version, 'Web ','')
WHERE Version LIKE 'WEB %'
于 2013-01-25T18:22:09.747 に答える