使用具有变量值的 IF 语句时 MYSQL 查询出错
Error in MYSQL Query while using IF statement with variable values
我在 MYSQL 中执行此查询时遇到错误。你能帮我找出问题所在吗?这是查询。
IF ('"+ @[User::CrMgName] +"' IS NULL)
THEN
Update companies
Set crm_id = '"+ @[User::crm_guid] +"'
Where TRIM(LOWER(company_directory_name)) = '"+ @[User::EquityStoryId] +"'
ELSE
Update companies
Set cr_manager = '"+ @[User::CrMgName] +"',
crm_id = '"+ @[User::crm_guid] +"'
Where TRIM(LOWER(company_directory_name)) = '"+ @[User::EquityStoryId] +"'
END IF
评论后,如果在脚本中使用IF语句表示的问题。
所以,解决方案有两个:
- (如 Fari 所说):使用存储过程
- 将
IF
语句替换为 CASE
语句
对于解决方案 2,试试这个:
UPDATE companies
SET crm_id =
CASE
WHEN @[User::CrMgName] IS NULL THEN '"+ @[User::crm_guid] +"'
ELSE'"+ @[User::crm_guid] +"'
END,
cr_manager =
CASE
WHEN @[User::CrMgName] IS NULL THEN cr_manager
ELSE '"+ @[User::CrMgName] +"'
END
WHERE TRIM(LOWER(company_directory_name)) = '"+ @[User::EquityStoryId] +"'
我在 MYSQL 中执行此查询时遇到错误。你能帮我找出问题所在吗?这是查询。
IF ('"+ @[User::CrMgName] +"' IS NULL)
THEN
Update companies
Set crm_id = '"+ @[User::crm_guid] +"'
Where TRIM(LOWER(company_directory_name)) = '"+ @[User::EquityStoryId] +"'
ELSE
Update companies
Set cr_manager = '"+ @[User::CrMgName] +"',
crm_id = '"+ @[User::crm_guid] +"'
Where TRIM(LOWER(company_directory_name)) = '"+ @[User::EquityStoryId] +"'
END IF
评论后,如果在脚本中使用IF语句表示的问题。
所以,解决方案有两个:
- (如 Fari 所说):使用存储过程
- 将
IF
语句替换为CASE
语句
对于解决方案 2,试试这个:
UPDATE companies
SET crm_id =
CASE
WHEN @[User::CrMgName] IS NULL THEN '"+ @[User::crm_guid] +"'
ELSE'"+ @[User::crm_guid] +"'
END,
cr_manager =
CASE
WHEN @[User::CrMgName] IS NULL THEN cr_manager
ELSE '"+ @[User::CrMgName] +"'
END
WHERE TRIM(LOWER(company_directory_name)) = '"+ @[User::EquityStoryId] +"'