Как я могу использовать LEFT и REPLACE для одного столбца в MySQL? - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу выбрать столбец и удалить (заменить пробелом) любые переводы строки или возврат каретки, и я хочу получить только первые 40 символов в столбце после замены.

Вот запрос Iпробовал, но я получаю

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

ОШИБКА 1064 (42000): у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с '' '), 30) из events_cleared, где сообщение типа' testing% '' в строке 1

Ответы [ 3 ]

0 голосов
/ 18 апреля 2019

У вас неправильный порядок аргументов (вы передали REPLACE аргументы LEFT).Попробуйте это:

select date, REPLACE(LEFT(message, 30), '\r', ' ')
from table1 
where message like 'testing%'
0 голосов
/ 18 апреля 2019

Ваши идентификаторы функций переключаются, и поэтому количество аргументов было неверным.если вы хотите, чтобы replace() происходило первым, то оно должно идти глубже вложения, чем left().Вы также написали 30 в качестве второго аргумента для left(), который даст вам только 30 символов, а не 40.

SELECT date,
       left(replace(message, '\r', ' '), 40)
       FROM table1
       WHERE message LIKE 'testing%';
0 голосов
/ 18 апреля 2019

Заменить нужны аргументы '\ r;и ''

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

или

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