我在数据库中有一系列字符串,例如" Et25 Silver W Mirror Cut Face Concave"我需要删除第一个单词和后面的空格,如果字符串以ET开头并且在它之后的任意两个数字字符后面有空格。任何人都可以帮我做这样的查询吗?
答案 0 :(得分:2)
以下内容应该返回您想要的内容:
select t.*,
(case when string regexp '^Et[0-9][0-9] '
then substr(string, 6)
else string
end)
from table t;
编辑:
查询的update
形式为:
update table t
set string = substr(string, 6)
where string regexp '^Et[0-9][0-9] ';
答案 1 :(得分:1)
问:有人可以帮我做这样的查询吗?
A:是。
好像你想要一个UPDATE语句,并为列分配一个表达式。 "的 UPDATE mytable SET mycol = expr
强>"将expr
替换为适合的表达式,该表达式对mycol的现有值进行操作并返回所需的值。我首先在SELECT语句中开发和测试表达式,例如" SELECT mycol, expr FROM mytable
"并确保表达式为"工作&# 34;在我运行UPDATE之前。
答案 2 :(得分:-1)
尝试此查询
select mid('test hello world',locate(' ','test hello world'),length('test hello world'))
找到:找到文本中的第一个空格
长度:获取文本的长度
mid:选择第一个值(这将是空格后的第一个字母)到第二个值(这将是最后一个字母)之间的单词
所以现在更新查询可以像
update a set a=mid(a,locate(' ',a),length(a)) from ...
这是一个测试代码
create table stackoverflow (test varchar(50));
insert into stackoverflow values('a b c');
insert into stackoverflow values('d e f');
insert into stackoverflow values('g h i');
SELECT * FROM `stackoverflow`;
update stackoverflow set test=mid(test,locate(' ',test),length(test));
SELECT * FROM `stackoverflow`;
这里是结果
mysql> create table stackoverflow (test varchar(50));
Query OK, 0 rows affected (0.44 sec)
mysql> insert into stackoverflow values('a b c');
Query OK, 1 row affected (0.03 sec)
mysql> insert into stackoverflow values('d e f');
Query OK, 1 row affected (0.07 sec)
mysql> insert into stackoverflow values('g h i');
Query OK, 1 row affected (0.15 sec)
mysql> SELECT * FROM `stackoverflow`;
+-------+
| test |
+-------+
| a b c |
| d e f |
| g h i |
+-------+
3 rows in set (0.00 sec)
mysql> update stackoverflow set test=mid(test,locate(' ',test),length(test));
Query OK, 3 rows affected (0.11 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> SELECT * FROM `stackoverflow`;
+------+
| test |
+------+
| b c |
| e f |
| h i |
+------+
3 rows in set (0.00 sec)
答案 3 :(得分:-1)
喜欢的东西 select substring(mycol,instr(mycol,''),len(mycol -instr(mycol,'')) 应该说。 您也可以将第二个var设置为字符串的最大长度,这应该有效。
答案 4 :(得分:-1)
UPDATE [table] SET [field] = IF(INSTR([field],'Et'),SUBSTR([field],INSTR([field],' ')+1),[field]);
非常粗略的实施。 Gordon基于RegEx的实施可能会更快。