同性恋和SQL

时间:2010-11-19 13:39:07

标签: sql psql homoiconicity

我目前正在使用emacs sql-mode作为我的sql shell,下面是一个(简化的)查询响应:

my_db=# select * from visit limit 4;

num |        visit_key            |          created           |    expiry
----+-----------------------------+----------------------------+------------
 1  | 0f6fb8603f4dfe026d88998d81a | 2008-03-02 15:17:56.899817 | 2008-03-02
 2  | 7c389163ff611155f97af692426 | 2008-02-14 12:46:11.02434  | 2008-02-14
 3  | 3ecba0cfb4e4e0fdd6a8be87b35 | 2008-02-14 16:33:34.797517 | 2008-02-14
 4  | 89285112ef2d753bd6f5e51056f | 2008-02-21 14:37:47.368657 | 2008-02-21
(4 rows)

如果我想根据该数据制定另一个查询,例如

my_db=# select visit_key, created from visit where expiry = '2008-03-02' 
           and num > 10;

您会看到我必须在visit_keycreated之间添加逗号,并用引号括住到期值。

是否有一个SQL DB shell显示其内容更多homoiconically,以便我可以最小化这种编辑?例如

num, visit_key, created, expiry           
(1, '0f6fb8603f4dfe026d88998d81a', '2008-03-02 15:17:56.899817', '2008-03-02')

(num=1, visit_key='0f6fb8603f4dfe026d88998d81a', 
    created='2008-03-02 15:17:56.899817', expiry='2008-03-02')      

我正在使用postgresql btw。

2 个答案:

答案 0 :(得分:1)

这是一个与我有时相似的想法,虽然我不确定这正是你所要求的:

SBCL中运行Lisp编译器(如SLIME)。然后加载CLSQL。它有一个“功能数据操作语言”(SELECT documentation)可能会帮助你做你想做的事情,也许与SLIME的自动完成功能相结合。如果没有,很容易定义Lisp函数和宏(假设你知道Lisp,但你已经是Emacser了!)。

开箱即用,它没有提供大多数SQL接口所具有的格式良好的表,但即使这样也不难添加。 Lisp当然足够强大,可以让人们轻松想出让您的常用操作更轻松的方法。

答案 1 :(得分:0)

我发现psql中的以下更改在某种程度上给了我同性恋:

=# select remote_ip, referer, http_method, time from hit limit 1;
    remote_ip    | referer | http_method |           time            
-----------------+---------+-------------+---------------------------
 213.233.132.148 |         | GET         | 2013-08-27 08:01:42.38808
(1 row)
=# \a
Output format is unaligned.
=# \f ''', '''
Field separator is "', '".
=# \t
Showing only tuples.
=# select remote_ip, referer, http_method, time from hit limit 1;
213.233.132.148', '', 'GET', '2013-08-27 08:01:42.38808

警告:一切都是字符串,它缺少开始和结束引号。