2017-05-31 107 views
-1

enter code here有什麼辦法可以將一個表的四個文本行合併爲一個字符串嗎?MySQL:將四個文本行合併爲一個字符串

例如: 表-A(字),表-B(字),Table_C(字),Table_D(字),

+---------+---------+---------+---------+ 
| Table_A | Table_B | Table_C | Table_D | 
+---------+---------+---------+---------+ 
| this | is  | a  | test | 
+---------+---------+---------+---------+ 

我怎麼能做出這樣的查詢:

select 'ok' 
from Table_A a, Table_B b, Table_C c, Table_D d 
where (a.word + ' ' + b.word + ' ' + c.word + ' ' + d.word = 'this is a test') 

編輯:我不能使用任何函數(如CONCAT())

+1

你正在做一個交叉連接在這裏,按預期如果表中甚至一個有一個以上的記錄可能無法正常工作。你能澄清你在這裏做什麼嗎? –

+0

請參閱:[爲什麼我應該提供一個用於我認爲是非常簡單的SQL查詢的MCVE?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve - 對於什麼似乎對我來說是一個非常簡單的sql查詢) – Strawberry

+0

嗨。我注意到你從未接受過答案,但你也沒有給出澄清,所以也許答案有幫助?如果是這樣,你可以[接受](https://meta.stackexchange.com/a/5235/266284)來證明這一點。 – philipxy

回答

0

您可以嘗試使用CONCAT()

SELECT 'ok' 
FROM Table_A a, Table_B b, Table_C c, Table_D d 
WHERE CONCAT(a.word, ' ', b.word, ' ', c.word, ' ', d.word) = 'this is a test' 

正如我在上面的評論中提到的那樣,您在四個表格之間進行交叉連接,如果您計劃在每個表格中有多個記錄,則可能無法很好地擴展。

0

這是很奇怪的,但你似乎想concat_ws()

select 'ok' 
from Table_A a cross join 
    Table_B b cross join 
    Table_C c cross join 
    Table_D d 
where concat_ws(' ', a.word, b.word, c.word, d.word) = 'this is a test'; 
+0

OP似乎想要「一張桌子的三個文本行」。我在這裏沒有看到。 – Strawberry

+0

@Strawberry我認爲你是從字面上理解問題的標題。戈登的回答似乎給了OP它想要的東西+1 –

+0

@TimBiegeleisen無可否認,這個問題並沒有使整個事情變得有意義 - 這就是爲什麼我建議它被關閉。這就是說,我認爲我們可以確定OP是指「一張桌子」,而不是四張。 – Strawberry

相關問題