dgi*_*gig 6 mysql if-statement concat
我正在尝试做一些我认为很简单的事情,但是我被困住了.我基本上想要从多个地址部分字段创建单个地址字段,使用IF语句来使用地址或交集.以下是我在该领域的发言:
CONCAT(loc_name,'\n',
IF ( add_number != '' && add_street != '' ) THEN
CONCAT(add_number,' ',add_street,'\n')
ELSEIF ( x_street_1 != '' && x_street_2 != '' ) THEN
CONCAT(x_street_1,' & ',x_street_2,'\n')
END IF
,city,', ',
IF ( state != '') THEN
CONCAT(state,' ',country,'\n')
ELSEIF ( x_street_1 != '' && x_street_2 != '' ) THEN
CONCAT(country,'\n')
END IF
) AS loc_info
Run Code Online (Sandbox Code Playgroud)
但它不喜欢我正在做的事情,它在以下方面引发错误:
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') THEN \n\t\t\t\t\t\tadd_number,' ',add_street,'\n'\n\t\t\t\t\tELSEIF ( x_street_1 != '' && x_"
Run Code Online (Sandbox Code Playgroud)
这似乎不喜欢我的空字段('')表示法.但我不知道为什么.我可以不在这样的CONCAT中使用IF语句吗?
感谢您的任何见解.
Jas*_*ett 10
IIRC,你想要使用的语法是
IF(condition, expression_if_true, expression_if_false)
Run Code Online (Sandbox Code Playgroud)
我可能错了,但你可能想尝试一下.
语法不正确。你想使用CASE
:
SET @loc_name = 'Location';
SET @add_street = 'Add Street';
SET @add_number = '10';
SET @x_street_1 = 'Street 1';
SET @x_street_2 = 'Street 2';
SET @city = 'City';
SET @state = 'State';
SET @country = 'Country';
SELECT Concat(@loc_name, '\n', CASE
WHEN @add_number != ''
AND @add_street != '' THEN
Concat(@add_number, ' ', @add_street, '\n')
WHEN @x_street_1 != ''
AND @x_street_2 != '' THEN
Concat(@x_street_1, ' & ', @x_street_2,
'\n')
end, @city, ', ', CASE
WHEN @state != '' THEN
Concat(@state, ' ', @country, '\n')
WHEN ( @x_street_1 != ''
AND @x_street_2 != '' ) THEN Concat(@country, '\n')
end) AS loc_info
Run Code Online (Sandbox Code Playgroud)
结果
| LOC_信息| ----------------------------------------------------------- | 地点 添加街10号 城市、州、国家 |
只需查找并替换@
为.
归档时间: |
|
查看次数: |
20625 次 |
最近记录: |