如何在mysql的同一列上使用LEFT和REPLACE?

问题描述 投票:0回答:3

我想选择一个列并删除(替换为空格)任何换行或回车,我想在替换后只获得列中的前40个字符。

这是我试过的查询,但我得到了

select date, REPLACE(LEFT(message, '\r', ' '), 30)
from table1 
where message like 'testing%'

错误1064(42000):您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以便在'''附近使用正确的语法,30)来自events_cleared,其中第1行的'testing%'消息

mysql select syntax
3个回答
0
投票

您的参数排序不正确(您已将REPLACE参数传递给LEFT)。试试这个:

select date, REPLACE(LEFT(message, 30), '\r', ' ')
from table1 
where message like 'testing%'

0
投票

替换需要参数'\ r;和''

LEFT(REPLACE(message, '\r', ' '), 30)

要么

REPLACE(LEFT(message,30), '\r', ' ')

0
投票

您的函数标识符已切换,因此参数的数量不正确。如果你想首先发生replace(),那么必须比left()更深入地嵌套。你还写了30作为left()的第二个参数,它只给你30个字符,而不是40个。

SELECT date,
       left(replace(message, '\r', ' '), 40)
       FROM table1
       WHERE message LIKE 'testing%';
© www.soinside.com 2019 - 2024. All rights reserved.