2014-12-08 110 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