很简单,我有一列这样的字符串:
abc1
abc2
abc3
abc4
abc5
我需要从此列中删除 'abc' 并仅保留右侧的数字,因此列将只有以下数字:
1
2
3
4
5
我想过那样的事情,但它不起作用
update table2
-> set col1 = case when 'abc1' then 1
-> else end;
我知道如何连接文本,我不知道如何撤消它...请帮助^^;
@McArthey 已经暗示了这一点,但是当“abc”始终是“abc”(即长度不变)时,这很容易做到。)
在各种字符串函数中,特别是一个:RIGHT()
. 这允许您从字符串中选择固定数量的字符。例如
SELECT RIGHT('abc3',1) -- Results in "3"
SELECT RIGHT('abc3',2) -- Results in "c3"
结合该LENGTH()
功能,您可以得出结论,数字是第三个字符之后的任何内容。IE
SELECT RIGHT('abc3',LENGTH('abc3')-3) -- Results in "3"
显然我使用的是硬字符串 ( 'abc3'
),但是这些可以很容易地替换为列名。
这里需要注意的是,这些都是基于固定长度的字母前缀。在您的示例中,“abc”的变量(更改)越多,从列中提取数值就越难。
如果这些是单个数字值,您可以使用
select right(column,1) ...
如果REGEXP文档更复杂,您可能还会发现它很有用。
如果您尝试修改该列,则必须分别获取这些值,然后将它们重新连接在一起。很难给出准确的答案,因为我不知道你想要完成什么,但你可以用 SUBSTR 做一些事情来获取单独的值。
获取'abc':SUBSTR(列,1,3)
获取数字:SUBSTR(column, 4)