如何正确对齐 SQLite 中的列?

Yan*_*ran 6 sqlite mac-os-x

我最近开始学习 SQLite,我正在尝试将表的数据输出到终端 (macOS)。但是,当某些列没有数据(例如在第二个条目中)时,我设置.mode column或未.mode tab正确对齐后的结果。

例如,在 Donna 没有年龄和地点数据的列模式中:

name            surname             age         place              
--------------  ------------------  ----------  ------------------
John  Smith  34          assistant manager
Donna  Patterson  
Run Code Online (Sandbox Code Playgroud)

并在选项卡模式下:

name surname  age   place   
John Smithonian     34 assistant manager
Donna Patterson
Run Code Online (Sandbox Code Playgroud)

但理想的结果是:

name            surname             age         place              
--------------  ------------------  ----------  ------------------
John            Smith               34          assistant manager
Donna           Patterson                     
Run Code Online (Sandbox Code Playgroud)

有什么我不知道的吗?我学习的书中的所有示例都描述了正确对齐的所有列。

标签模式也会发生同样的事情。

我正在使用预装 3.8 版 SQLite 的 Mac 上的 Terminal.app 工作

在后来的测试中,我发现如果我的列都填充了信息,那么所有数据是否对齐都是可能的。这取决于信息。当我Phone Number在其中一个示例中添加一列时,漂亮的安排丢失了。

Mat*_*jaž 5

由于.mode tabTAB 字符的性质,不能保证与输出对齐。另一方面.mode column应该工作正常。

由于看起来 NULL 值的空字段会产生问题,因此您可以使用 更改 NULL 值的显示方式.nullvalue SOMESTRING。我个人喜欢.nullvalue [NULL]

总结一下:

sqlite> .mode column
sqlite> .headers on
sqlite> .nullvalue [NULL]
sqlite> SELECT * FROM people;
name            surname             age         place              
--------------  ------------------  ----------  ------------------
John            Smith               34          assistant manager
Donna           Patterson           [NULL]      [NULL]
Run Code Online (Sandbox Code Playgroud)

还要确保检查.width设置每列字符数的选项(负值右对齐,0 重置)以防万一。

  • 这些命令可以添加到 ~/.sqliterc 中以使其持久化。感谢 /sf/ask/366845041/ (将我带到这里的搜索的第二个结果)。 (2认同)