嗨,我有一张名为agent2的表,其结构如下,
agents2
---------------
id , title
在 table.title 下有几条记录,其中包含 (www/http..etc) 例如
title= www.postgre.com
我想看到的是
title= postgre.com
是否有查询如果我执行会删除www.
部分。谢谢你的帮助。
UPDATE agents2 SET title = replace(title, 'www.', '') WHERE title LIKE 'www.%';
你可以在 SQL Server 中尝试这样的事情
SELECT REPLACE ( title , 'www.' , '' ), id from agents2
例如
SELECT REPLACE ( 'www.example.com' , 'www.' , '' )
会给你'example.com'
不幸的是,它将取代所有出现的“www”。
例如
SELECT REPLACE ( 'www.examplewww.com' , 'www.' , '' )
会给你'examplecom'
有关更多示例,请参阅http://technet.microsoft.com/en-us/library/ms186862.aspx
SQLite (WebSQL) 架构设置:
CREATE TABLE agents2
("id" INTEGER, "title" TEXT(24));
INSERT INTO agents2 ("id", "title") VALUES (1, 'www.postgre.com');
INSERT INTO agents2 ("id", "title") VALUES (2, 'http://stackoverflow.com');
INSERT INTO agents2 ("id", "title") VALUES (3, 'http://www.sqlfiddle.com');
INSERT INTO agents2 ("id", "title") VALUES (4, 'http://www.com-www.com/');
查询 1:
SELECT REPLACE ( ' '||REPLACE ( title , 'http://' , '' ) , ' www.' , '' )
FROM agents2
结果:
| REPLACE ( ' '||REPLACE ( title , 'http://' , '' ) , ' www.' , '' ) |
|--------------------------------------------------------------------|
| postgre.com |
| stackoverflow.com |
| sqlfiddle.com |
| com-www.com/ |
SQLite 有一个 instr() 函数。所以:
instr('title= www.postgre.com','www')
将返回“www”的起始位置。您应该能够使用它以及子字符串和连接来获得您想要的值。
SEB BINFIELD 回答了我的问题。正是我所需要的。感谢 Fabien 提供了非常有用且易于掌握的解决方案。
UPDATE agents2 SET title = replace(title, 'www.', '') WHERE title LIKE 'www.%';
REPLACE
将删除标题中所有出现的字符串。
这只会在开始时删除字符串。
UPDATE agents2 SET title = SUBSTR(title, 8) WHERE title LIKE 'http://%';
UPDATE agents2 SET title = SUBSTR(title, 5) WHERE title LIKE 'www.%';