gpt4 book ai didi

mysql - 如果条件为 true 则运行 MySQL 查询,否则运行另一个查询

转载 作者:行者123 更新时间:2023-11-29 16:08:22 26 4
gpt4 key购买 nike

我需要将地址列拆分为街道名称和街道编号。问题有时是位于 streetName 列中的完整地址,有时是位于 streetNumber 列中的完整地址。我正在使用这段代码来进行分割 替换(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) 作为数字。

我想要做的是,如果 streetName 为 null 或为空,则运行 select 查询语句的这一部分,并使用 streetNumber 执行代码,反之亦然。

我必须在存储过程中划分 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';

最佳答案

SELECT 语句中不允许使用存储过程。所以你的方法不会起作用。

尝试将逻辑从存储过程转移到足够的子查询中。

关于mysql - 如果条件为 true 则运行 MySQL 查询,否则运行另一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55516578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com