2014-12-08 112 views
0

我有很多的值,如“1 @ 1 4015” 我需要建立SQL的DB(legasy的FoxPro)这样的请求,Concat的不同列和搜索字符串:我如何使用这个表达式

SELECT  ba1 AS mest, bd1 AS Ukpg, be1 AS well, be12 AS probur, be13 AS iskust, be6 AS burDate 
FROM   ksmest 
WHERE  ((ba1 + '@' + bd1 + '@' + be1) IN ('[email protected]@15', '[email protected]@15')) 

ba1,bd1和be1是数字(不是字符串)。如你所见,我需要连接来自不同列的字符串并使用这个表达式进行搜索。我的要求不适用,这只是一个示例。 可以解决吗?或者可能是另一种方式?

回答

1

您可以将相关列组合到SELECT语句中的聚合字段中,将它们转换为过程中的字符串 - 请参阅本示例中的“mycolumn”。你的语法看起来更像T-SQL,对于VFP你可以使用INLIST()

select ; 
    ba1 AS mest, bd1 AS Ukpg, be1 AS well, be12 AS probur, be13 AS iskust, be6 AS burDate ; 
    alltrim(str(ba1, 12, 0)) + "@" + alltrim(str(bd1, 12, 0)) ; 
     + "@" + alltrim(str(be1, 12, 0)) as mycolumn; 
from ksmest ; 
where inlist(mycolumn, "[email protected]@15", "[email protected]@15") 
+0

有些解释会很好。 – Silicomancer 2014-12-08 08:58:17

+0

我自己找到了解决方案,但感谢您的回答!我的方法工作起来比较慢:'SELECT LTRIM(STR(ba1))+'@'+ LTRIM(STR(bd1))+'@'+ LTRIM(STR(be1))as wid,be12 AS probur,be13 ((ALLTRIM(STR(ba1))+'@'+ ALLTRIM(STR(bd1))+'@'+ ALLTRIM(STR(be1)))IN('1 @ 1 @ 117','1 @ 1 @ 141','1 @ 2 @ 206')'事实上'wid'字段在最后一个符号后有很多空格,ALLTRIM不能帮助:) – user2598575 2014-12-08 11:27:39

+0

只要bd1和ba1和be1是整数,或者你不介意你的wid可能是“123.00 @ 456.23 @ 192.98”或类似的,这将起作用。 – 2014-12-08 12:09:11