MySQL SELECT 条件 CONCAT
MySQL SELECT Conditional CONCAT
我有一个基本上保存地址的数据库
table (tblAddress) 看起来像这样...
housename | housenumber | address1 | address2 | address3 | town | postcode
Banana House | 29 | Acacia Road | Yellow Skin Way | | Nuttytown | W1 1MP
当我根据邮政编码搜索数据库时,我希望能够 return 并得到这样的结果...
Banana House,29 Acacia Road,Yellow Skin Way,Nuttytown,W1 1MP
因此,如果填充了地址 1,我需要将门牌号与地址 1 连接起来。如果不是,则与 address2 或 address3 连接。然后根据示例遵循其余地址。
我尝试使用 IF 和 CASE 语句,但似乎无法接近我想要的输出。
希望这是有道理的。
使用 concat_ws()
(带分隔符的串联)和 nullif()
SELECT CONCAT_WS(',', NULLIF(housename, ''),
NULLIF(housenumber, ''),
NULLIF(address1, ''),
NULLIF(address2, ''),
NULLIF(address3, ''),
NULLIF(town, ''),
NULLIF(postcode, '')
) AS address FROM tblAddress
像下面这样尝试,
SELECT CONCAT_WS ( ", ",
housename,
CONCAT(housenumber, CONCAT_WS (", ", NULLIF(address1, ''), NULLIF(address2, ''), NULLIF(address3, ''))),
town,
postcode) AS address
FROM tblAddress
您可以通过添加一些连接操作来完成。
检查下面的代码它应该工作。
SELECT CONCAT(housename, CONCAT(" ",CONCAT(housenumber, CONCAT(" ",CONCAT_WS(' ,',
NULLIF(address1, ''),
NULLIF(address2, ''),
NULLIF(address3, ''),
NULLIF(town, ''),
NULLIF(postcode, '')))))) AS concatedAddress FROM tblAddress;
这个怎么样:
SELECT
housename
,CONCAT( housenumber, CONCAT(' ', COALESCE(address1, '')), CONCAT(' ', COALESCE(address2, '')), CONCAT(' ', COALESCE(address3, '')) ) AS address
,town
,postcode
FROM tblAddress;
我有一个基本上保存地址的数据库
table (tblAddress) 看起来像这样...
housename | housenumber | address1 | address2 | address3 | town | postcode
Banana House | 29 | Acacia Road | Yellow Skin Way | | Nuttytown | W1 1MP
当我根据邮政编码搜索数据库时,我希望能够 return 并得到这样的结果...
Banana House,29 Acacia Road,Yellow Skin Way,Nuttytown,W1 1MP
因此,如果填充了地址 1,我需要将门牌号与地址 1 连接起来。如果不是,则与 address2 或 address3 连接。然后根据示例遵循其余地址。
我尝试使用 IF 和 CASE 语句,但似乎无法接近我想要的输出。
希望这是有道理的。
使用 concat_ws()
(带分隔符的串联)和 nullif()
SELECT CONCAT_WS(',', NULLIF(housename, ''),
NULLIF(housenumber, ''),
NULLIF(address1, ''),
NULLIF(address2, ''),
NULLIF(address3, ''),
NULLIF(town, ''),
NULLIF(postcode, '')
) AS address FROM tblAddress
像下面这样尝试,
SELECT CONCAT_WS ( ", ",
housename,
CONCAT(housenumber, CONCAT_WS (", ", NULLIF(address1, ''), NULLIF(address2, ''), NULLIF(address3, ''))),
town,
postcode) AS address
FROM tblAddress
您可以通过添加一些连接操作来完成。
检查下面的代码它应该工作。
SELECT CONCAT(housename, CONCAT(" ",CONCAT(housenumber, CONCAT(" ",CONCAT_WS(' ,',
NULLIF(address1, ''),
NULLIF(address2, ''),
NULLIF(address3, ''),
NULLIF(town, ''),
NULLIF(postcode, '')))))) AS concatedAddress FROM tblAddress;
这个怎么样:
SELECT
housename
,CONCAT( housenumber, CONCAT(' ', COALESCE(address1, '')), CONCAT(' ', COALESCE(address2, '')), CONCAT(' ', COALESCE(address3, '')) ) AS address
,town
,postcode
FROM tblAddress;