如何在一个声明的变量中连接地址?
How to concatenate addresses in one declared variable?
我有构建地址字符串的当前代码,如下所示:
addressStreet = "";
if(q1.addr1 != "") {
addressStreet = addressStreet & q1.addr1;
}
if(q1.addr2 != "") {
addressStreet = addressStreet & "<br>" & q1.addr2;
}
if(q1.addr3 != "") {
addressStreet = addressStreet & "<br>" & q1.addr3;
}
if(q1.addr4 != "") {
addressStreet = addressStreet & "<br>" & q1.addr4;
}
Q1
是所有列所在的查询。我试图在 Sybase SQL 查询中完成所有这些连接。这是我尝试过的示例:
DECLARE @AddressStreet VARCHAR(500)
SELECT
CASE
WHEN datalength(address1) > 0 THEN @AddressStreet + address1
WHEN datalength(address2) > 0 THEN @AddressStreet + address2
WHEN datalength(address3) > 0 THEN @AddressStreet + address3
WHEN datalength(address4) > 0 THEN @AddressStreet + address4
END AS AddressStr
FROM Info
WHERE recid = 1214
上面的查询产生了这个结果:
18 Wolf Street,
该结果不正确,因为 address2
列具有此值:Suite 408
。地址应如下所示:
18 Wolf Street,
Suite 408
有没有办法在 Sybase SQL 中获得所需的输出?谢谢。
当您有 CASE
语句时,第一个满足的条件将被执行。因此,在您的情况下, address1
的长度大于 0,因此 @AddressStreet + address1
被执行,仅此而已。我不太了解 Sybase,不知道有哪些功能可用,但您肯定可以尝试类似的操作:
SELECT CASE WHEN datalength(address1) > 0 THEN address1 ELSE '' END +
CASE WHEN datalength(address2) > 0 THEN address2 ELSE '' END +
CASE WHEN datalength(address3) > 0 THEN address3 ELSE '' END +
CASE WHEN datalength(address4) > 0 THEN address4 ELSE '' END
AS AddressStr
FROM Info
WHERE recid = 1214
这不会在地址字段之间有任何空格,因此如果您希望它产生 HTML 换行符,您可能需要类似 '<BR>' + address2
的内容。
我有构建地址字符串的当前代码,如下所示:
addressStreet = "";
if(q1.addr1 != "") {
addressStreet = addressStreet & q1.addr1;
}
if(q1.addr2 != "") {
addressStreet = addressStreet & "<br>" & q1.addr2;
}
if(q1.addr3 != "") {
addressStreet = addressStreet & "<br>" & q1.addr3;
}
if(q1.addr4 != "") {
addressStreet = addressStreet & "<br>" & q1.addr4;
}
Q1
是所有列所在的查询。我试图在 Sybase SQL 查询中完成所有这些连接。这是我尝试过的示例:
DECLARE @AddressStreet VARCHAR(500)
SELECT
CASE
WHEN datalength(address1) > 0 THEN @AddressStreet + address1
WHEN datalength(address2) > 0 THEN @AddressStreet + address2
WHEN datalength(address3) > 0 THEN @AddressStreet + address3
WHEN datalength(address4) > 0 THEN @AddressStreet + address4
END AS AddressStr
FROM Info
WHERE recid = 1214
上面的查询产生了这个结果:
18 Wolf Street,
该结果不正确,因为 address2
列具有此值:Suite 408
。地址应如下所示:
18 Wolf Street,
Suite 408
有没有办法在 Sybase SQL 中获得所需的输出?谢谢。
当您有 CASE
语句时,第一个满足的条件将被执行。因此,在您的情况下, address1
的长度大于 0,因此 @AddressStreet + address1
被执行,仅此而已。我不太了解 Sybase,不知道有哪些功能可用,但您肯定可以尝试类似的操作:
SELECT CASE WHEN datalength(address1) > 0 THEN address1 ELSE '' END +
CASE WHEN datalength(address2) > 0 THEN address2 ELSE '' END +
CASE WHEN datalength(address3) > 0 THEN address3 ELSE '' END +
CASE WHEN datalength(address4) > 0 THEN address4 ELSE '' END
AS AddressStr
FROM Info
WHERE recid = 1214
这不会在地址字段之间有任何空格,因此如果您希望它产生 HTML 换行符,您可能需要类似 '<BR>' + address2
的内容。