我想删除连续的最后一个字符,但是如果最后一个字符是“ - ”。
例如,我的行看起来像这样:
hello-world
today-is-monday-
应该是这样的:
hello-world
today-is-monday
我如何在SQL中执行此操作?
答案 0 :(得分:3)
您可以将trim()
功能用作
mysql> select trim( trailing '-' from 'hello-');
+-----------------------------------+
| trim( trailing '-' from 'hello-') |
+-----------------------------------+
| hello |
+-----------------------------------+
1 row in set (0.00 sec)
mysql> select trim( trailing '-' from 'hello');
+----------------------------------+
| trim( trailing '-' from 'hello') |
+----------------------------------+
| hello |
+----------------------------------+
1 row in set (0.00 sec)
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim
因此,在查询中,用您的列名替换硬编码的hello-
。
答案 1 :(得分:0)
如果你的意思是更新表格,那么
UPDATE table
SET field = SUBSTRING(field, 1, CHAR_LENGTH(field) - 1)
WHERE field LIKE '%-'
如果您的意思是要编辑输出而不是表格中的数据,那么
SELECT CASE WHEN field LIKE '%-'
THEN SUBSTRING(field, 1, CHAR_LENGTH(field) - 1)
ELSE field
END AS field
答案 2 :(得分:0)
跟随代码片段
声明
a_msg VARCHAR2(4000);
b_msg varchar2(100);
BEGIN
a_msg := '1,2,3,4,';
b_msg := substr(a_msg,1,length(a_msg)-1);
Dbms_Output.Put_line('b_msg:'||b_msg);
END ;
O / P:b_msg:1,2,3,4