该声明包括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
?你可以retrive数据时添加一个新行。 – IshaS 2014-09-26 04:12:18
声音像http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – 2014-09-26 21:36:39