2014-09-26 72 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