将 mysql 查询转换为 MS SQL

Converting mysql query to MS SQL

嗨,我想知道是否有人可以帮助我,我有以下 MySQL 查询(摘录):

concat_ws('\n', 
                    IF(LENGTH(PafAddress.line1),PafAddress.line1,NULL),
                    IF(LENGTH(PafAddress.line2),PafAddress.line2,NULL),
                    IF(LENGTH(PafAddress.line3),PafAddress.line3,NULL),
                    IF(LENGTH(PafAddress.line4),PafAddress.line4,NULL),
                    IF(LENGTH(PafAddress.Line5),PafAddress.line5,NULL),
                    IF(LENGTH(PafAddress.post_town),PafAddress.post_town,NULL),
                    IF(LENGTH(PafAddress.county),PafAddress.county,NULL),
                    IF(LENGTH(PafAddress.postcode),PafAddress.postcode,NULL)
) AS AddressLabel

从另一个 table 获取多个地址字段并将其放入备忘录字段格式,带换行符,并删除空地址行。

在 MySQL 中完美运行。

我现在正尝试将此实现到 PHP 网站上,该网站是 运行 由 MS Access(不是我的选择!)并且它不喜欢语法。

我不是 MS Access 专家,所以如果有人告诉我如何在 Access 中实现这一点,我将不胜感激 SQL。

尝试使用 IIF(condition, truevalue, falsevalue) 语句。此外,您可以使用 &

连接

这里有两个参考供您参考: article about using IIFarticle about concatenating using &article about len() instead of length()

因此您的代码可能如下所示:

IIF(Len(PafAddress.line1)>0,PafAddress.line1,"") & " " &
IIF(Len(PafAddress.line2)>0,PafAddress.line2,"") & " " &
IIF(Len(PafAddress.line3)>0,PafAddress.line3,"") & " " &
IIF(Len(PafAddress.line4)>0,PafAddress.line4,"") & " " &
IIF(Len(PafAddress.Line5)>0,PafAddress.line5,"") & " " &
IIF(Len(PafAddress.post_town)>0,PafAddress.post_town,"") & " " &
IIF(Len(PafAddress.county)>0,PafAddress.county,"") & " " &
IIF(Len(PafAddress.postcode)>0,PafAddress.postcode,"") 
AS AddressLabel

要跳过空记录,请尝试使用此方法:

iif( Len(PafAddress.line1)>0 
     OR Len(PafAddress.line2)>0
     OR Len(PafAddress.line3)>0
     OR Len(PafAddress.line4)>0
     OR Len(PafAddress.line5)>0
     OR Len(PafAddress.post_town)>0
     OR Len(PafAddress.county)>0
     OR Len(PafAddress.postcode)>0 
,
IIF(Len(PafAddress.line1)>0,PafAddress.line1,"") & " " &
IIF(Len(PafAddress.line2)>0,PafAddress.line2,"") & " " &
IIF(Len(PafAddress.line3)>0,PafAddress.line3,"") & " " &
IIF(Len(PafAddress.line4)>0,PafAddress.line4,"") & " " &
IIF(Len(PafAddress.Line5)>0,PafAddress.line5,"") & " " &
IIF(Len(PafAddress.post_town)>0,PafAddress.post_town,"") & " " &
IIF(Len(PafAddress.county)>0,PafAddress.county,"") & " " &
IIF(Len(PafAddress.postcode)>0,PafAddress.postcode,"" & char(13) & char(10) )
,"") 
AS AddressLabel

在这个查询中,(1st)检查任何值的长度是否大于0...如果是,用CRLF输出地址行;否则输出一个空字符串。