我有一个看起来像这样的表:
id | name | color
----|-----------------------------|-------
1 | some string?12345 | red
2 | another string?843 | red
3 | and another string?84930283 | blue
我需要更新所有行的名称列以删除'?'以及它之后的一切。所以最终的结果应该是:
id | name | color
----|--------------------|-------
1 | some string | red
2 | another string | red
3 | and another string | blue
答案 0 :(得分:2)
您可以使用split_part
:
SELECT split_part(name, '?', 1)
FROM mytable
UPDATE
你可以使用:
UPDATE mytable
SET name = split_part(name, '?', 1)
WHERE strpos(name, '?') <> 0
答案 1 :(得分:2)
或者也许......只是添加另一种方法:
SQL> update table set name = substring(name from '^[^?]*') ;
答案 2 :(得分:1)
使用LEFT
和POSITION
字符串函数。官方 link
查看结果
Select id, LEFT(name,POSITION('?' in name)-1) as Name, Color
From Yourtable
至update
Update Yourtable
SET name = LEFT(name,POSITION('?' in name)-1)
Where POSITION('?' in name)> 0
答案 3 :(得分:0)
至于问题:String Functions and Operators
Offtopic,请勿阅读以下任何内容。
最初有史前人口头传递知识。
然后有书籍,每个有权访问它们的人都可以从中获取知识。
然后谷歌来了,每个人都能得到这个问题的答案。
随后出现了StackOverflow,任何人都可以请求有人向Google询问并获得他们的答案以获得一些奖励。
下一步是什么?