Мне нужно разделить адресный столбец на streetName и streetNumber.Иногда проблема заключается в том, что полный адрес находится в столбце streetName, а иногда и в столбце streetNumber.Я использую этот код для разделения replace(streetName, substring_index(streetName, ' ', -1), '') as
street,substring_index(streetName, ' ', -1) as number
и replace(streetNumber, substring_index(streetNumber, ' ', -1), '') as
street,substring_index(streetNumber, ' ', -1) as number.
Что я хочу сделать, это запустить этот раздел моего оператора запроса select, если streetName равно нулю или пусто, выполнить командукод с номером улицы и наоборот.
У меня есть разделы ifStreet () и IfStreetNumber () в хранимой процедуре.Но я получаю сообщение об ошибке, когда запускаю его, и если я помещаю код непосредственно в операторы case, он не работает так же хорошо. Я получаю сообщение об ошибке, в вашем синтаксисе SQL есть ошибка.Можно ли выполнить запрос на основе условия или что не так с моим подходом?Спасибо,
SELECT
firstName,
lastName,
D.email AS email,
streetName,
streetNumber,
zipCode,
city,
IF(length(zipCode) =5,'Germany','') As country,
registeredOn,
N.email AS matchedEmail,
CASE
WHEN gender = 'Frau' OR gender = 'f' THEN 'f'
WHEN gender = 'Herr' OR gender = 'm' THEN 'm'
ELSE ''
END AS Title,
CASE
WHEN gender = 'Frau' OR gender = 'f' THEN 'Frau'
WHEN gender = 'Herr' OR gender = 'm' THEN 'Herr'
ELSE ''
END AS Salutation,
CASE
WHEN streetName !='' THEN
call ifStreet()
ELSE
call ifStreetNumber()
END
FROM
matchFiles.TableA AS D
INNER JOIN
matchFiles.TableB AS N ON D.email = N.email
WHERE
registeredOn <= '2018-08-31';