2014-09-26 68 views
-1

嘿傢伙,我已經做了在MySQL到新行值添加到行一些編碼..添加行下面的另一個值

SELECT 
babe 
FROM 
(SELECT 
    concat_ws(' ', 'assword \n') AS babe, 

) test; 

當我這樣喜歡我得到這樣

輸出BABE

asswordname

我需要的是像

輸出

BABE

assword

name(這將低於assword

是否有任何MySQL的函數來做到這一點?......或者我可以更新該行?? ..

我是mysql中的新手。希望你們能幫助我...預先..謝謝

+0

?你可以retrive數據時添加一個新行。 – IshaS 2014-09-26 04:12:18

+0

聲音像http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – 2014-09-26 21:36:39

回答

0

該聲明包括babe列中的換行符。您可以通過使用HEX()函數來查看字符編碼來確認。

例如:

SELECT HEX(t.babe) 
    FROM (SELECT CONCAT_WS(' ', 'assword \n') AS babe) t 

在我的系統,這將輸出:

617373776F7264200A 

這是很容易理解什麼返回

a s s w o r d  \n 
61 73 73 77 6F 72 64 20 0A 

(在原始查詢,有一個額外的逗號會阻止語句運行,也許在t中有另一個表達式他選擇內聯視圖的列表,並返回示例輸出中顯示的'name'值。但是我們在外部查詢中沒有看到任何引用。

目前尚不清楚爲什麼你需要換行符。如果你想返回:

BABE 
----------- 
asssword 
name 

這看起來像兩個單獨的行給我。但它是有效的(但特殊)要做到這一點:

SELECT t.babe 
    FROM (SELECT CONCAT_WS(' ', 'assword \nname') AS babe) t 

隨訪

問:我只是想知道如何添加assword下方的新行..如果你知道請編輯答案

目前尚不清楚您嘗試實現的結果。這個規範與用例的背景是分開的,只是奇怪而已。

答:如果我有需要返回行:一行與文字'assword'另一行「下面」,它用文字'name',我可以這樣做:

(SELECT 'assword' AS some_string) 
    UNION ALL 
    (SELECT 'name' AS some_string) 
    ORDER BY some_string 

在這種情況下,我們可以通過簡單引用ORDER BY子句中的列來獲得我們需要的排序。

在更一般的情況下,當ORDER BY子句沒有方便的表達式時,我會添加一個額外的列,然後對UNION ALL操作的結果集執行SELECT操作。在這個例子中,「額外」列被命名爲seq

SELECT t.some_string 
    FROM (SELECT 'assword' AS some_string, 1 AS seq 
      UNION ALL SELECT 'name', 2 
     ) 
ORDER BY t.seq 

另一個例子:

(SELECT 'do' AS tone, 1 AS seq) 
    UNION ALL (SELECT 're', 2) 
    UNION ALL (SELECT 'mi', 3) 
    UNION ALL (SELECT 'fa', 4) 
    ORDER BY seq 

我只需要添加一個外部選擇,如果我需要一個投影操作(例如,從返回的ResultSet你爲什麼要添加一個新行到mysql刪除seq列。

SELECT t.tone 
    FROM (SELECT 'do' AS tone, 1 AS seq 
      UNION ALL SELECT 're', 2 
      UNION ALL SELECT 'mi', 3 
      UNION ALL SELECT 'fa', 4 
     ) 
    ORDER BY t.seq 
+0

這沒有告訴我一個新的行......我只是想在密碼下面添加名稱.. – 2014-09-26 14:09:59

+0

我只是想知道如何在密碼下添加新行。如果您知道,請編輯答案 – 2014-09-26 17:03:11