Mysql SQL删除最后一个字符,如果它是-&引用;

Mysql SQL删除最后一个字符,如果它是-&引用;,mysql,sql,Mysql,Sql,我想删除行中的最后一个字符,但如果最后一个字符是“-” 例如,我的行如下所示: hello-world today-is-monday- hello-world today-is-monday 应该是这样的: hello-world today-is-monday- hello-world today-is-monday 如何在SQL中实现这一点?您可以使用trim()函数作为 mysql> select trim( trailing '-' from 'hello-');

我想删除行中的最后一个字符,但如果最后一个字符是“-”

例如,我的行如下所示:

hello-world

today-is-monday-
hello-world

today-is-monday
应该是这样的:

hello-world

today-is-monday-
hello-world

today-is-monday
如何在SQL中实现这一点?

您可以使用
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)


因此,在查询中,用您的列名替换硬编码的
hello-

如果您的意思是更新表,那么

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
如果您的意思是要编辑输出而不是表中的数据,那么

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
遵循代码snipet
申报

O/p:b_msg:1,2,3,4