嘿伙计们我在mysql中做了一些编码,为行添加了一个新的行值..
SELECT
babe
FROM
(SELECT
concat_ws(' ', 'assword \n') AS babe,
) test;
当我这样做时,我得到了像
这样的输出 BABE
assword
name
我需要的是像
这样的输出 BABE
assword
name
(这将低于assword
)
是否有任何mysql函数可以执行此操作?...或者我可以更新行吗?? ..
我是mysql的新手。希望你们能帮帮我......谢谢你们。
答案 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