在行下方添加另一个值

时间:2014-09-26 04:07:03

标签: mysql

嘿伙计们我在mysql中做了一些编码,为行添加了一个新的行值..

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

) test;

当我这样做时,我得到了像

这样的输出

BABE

assword name

我需要的是像

这样的输出

BABE

assword

name(这将低于assword

是否有任何mysql函数可以执行此操作?...或者我可以更新行吗?? ..

我是mysql的新手。希望你们能帮帮我......谢谢你们。

1 个答案:

答案 0 :(得分: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

(在原始查询中,有一个无关的逗号会阻止语句运行。也许在内联视图的SELECT列表中有另一个表达式,并且返回了'name'中显示的值。示例输出。但我们在外部查询中没有看到任何引用。

目前尚不清楚为什么需要换行符。如果你想返回:

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

对我来说,这看起来像是两行。但这样做是有效的(但很奇怪):

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

<强>后续

问:我只想知道如何在问题下方添加新行..如果您知道,请编辑答案

目前尚不清楚你想要达到的结果。与用例的上下文脱节的规范只是奇怪的。

答:如果我需要返回两个行:一行包含文字'assword',另一行“在”下面“文字{{ {1}},我可以这样做:

'name'

在这种特殊情况下,我们可以通过对 ( SELECT 'assword' AS some_string ) UNION ALL ( SELECT 'name' AS some_string ) ORDER BY some_string 子句中的列的简单引用来获得所需的排序。

在更一般的情况下,当ORDER BY子句没有方便的表达式时,我会添加一个额外的列,并从UNION ALL操作对结果集执行SELECT。在此示例中,该“额外”列名为ORDER BY

seq

另一个例子:

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

如果我需要一个投影操作,我只需要添加一个外部SELECT(例如,从返回的结果集中删除 ( 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 列。

seq