小编wil*_*map的帖子

PostgreSQL CASE ... END有多个条件

这是我的表的摘录:

  gid    |    datepose    |    pvc
---------+----------------+------------
 1       |  1961          | 01
 2       |  1949          |
 3       |  1990          | 02
 1       |  1981          |
 1       |                | 03
 1       |                |
Run Code Online (Sandbox Code Playgroud)

我想用SELECT CASE下面的方法填充PVC柱:

SELECT

 gid,

 CASE
  WHEN (pvc IS NULL OR pvc = '') AND datpose < 1980) THEN '01'
  WHEN (pvc IS NULL OR pvc = '') AND datpose >= 1980) THEN '02'
  WHEN (pvc IS NULL OR pvc = '') AND (datpose IS NULL OR …
Run Code Online (Sandbox Code Playgroud)

postgresql case

76
推荐指数
1
解决办法
18万
查看次数

PostgreSQL:将字符串转换为日期DD/MM/YYYY

我正在尝试将一个CHARACTER VARYING列转换为DATE,但我需要一个这样的日期格式:DD/MM/YYYY.我使用以下SQL:

ALTER TABLE test 
ALTER COLUMN date TYPE DATE using to_date(date, 'DD/MM/YYYY');
Run Code Online (Sandbox Code Playgroud)

结果是这样的日期:YYYY-MM-DD.

如何获得DD/MM/YYYY格式?

非常感谢提前!

托马斯

string postgresql casting date

35
推荐指数
3
解决办法
15万
查看次数

PostgreSQL regexp_replace()只保留一个空格

我需要清理一个字符串列,其中包含空格和制表符,在字符串的开头或结尾处(这是一团糟!).我想在每个单词之间只留一个空格.假设我们有以下字符串,其中包含所有可能的情况:

mystring = '  one two    three      four    '
Run Code Online (Sandbox Code Playgroud)
  • 'one'之前的2个空格
  • 'one'和'two'之间有1个空格
  • "两个"和"三个"之间有4个空格
  • '三'后2个标签
  • '四'后的1个标签

这是我的方式:

  1. 我删除了前导和尾随空格
  2. 我删除了前导和尾随标签
  3. 我将'重复至少两个的空格'和标签替换为唯一的空格

WITH

  t1 AS (SELECT'  one two    three      four    '::TEXT AS mystring),

  t2 AS (SELECT TRIM(both ' ' from mystring) AS mystring FROM t1),

  t3 AS (SELECT TRIM(both '\t' from mystring) AS mystring FROM t2)

  SELECT regexp_replace(mystring, '(( ){2,}|\t+)', ' ', 'g') FROM t3 ;
Run Code Online (Sandbox Code Playgroud)

我最终得到以下字符串,看起来不错,但我仍然有一个尾随空格...

'one two three four '
Run Code Online (Sandbox Code Playgroud)

有没有想过以更简单的方式做到这一点并解决最后一个问题?

非常感谢 !

regex string postgresql whitespace replace

17
推荐指数
1
解决办法
2万
查看次数

为响应式设计指定换行符

当屏幕不够大时,我找不到如何指定字符串应该在哪个点断开.例如,我希望文本«Commune:CENON-SUR-VIENNE»打破冒号后的角色.是否有一种语法允许手动指定,而不是让Bootstrap CSS自动执行?

我在下面添加了一段HTML代码.我已经在以下内容中指定了元标记<head>:

<meta name="viewport" content="width=device-width, initial-scale=1.0">
Run Code Online (Sandbox Code Playgroud)

截图:

在此输入图像描述

HTML代码:

<div class="container">
  <div class="tab-content">
    <div class="col-lg-5">
      <div>
        <h4>Commune : CENON-SUR-VIENNE</h4>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

css line-breaks twitter-bootstrap twitter-bootstrap-3

11
推荐指数
3
解决办法
1万
查看次数

Python:运行XLRD的问题

我正在测试新安装的“xlrd”包:

#!/usr/bin/env/python

import xlrd

wb = xlrd.open_workbook('D:\excel\test.xls')

print (wb.sheets())
Run Code Online (Sandbox Code Playgroud)

我通过 IDLE (Windows 7) 运行它,并收到以下错误消息:

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:19:30) [MSC v.1600 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
Traceback (most recent call last):
  File "D:\excel\testxls.py", line 3, in <module>
    import xlrd
  File "C:\Program Files (x86)\Python33\lib\site-packages\xlrd\__init__.py", line 1187
    print "EXTERNSHEET(b7-):"
                        ^
SyntaxError: invalid syntax
>>> 
Run Code Online (Sandbox Code Playgroud)

关于这个问题的任何想法?

谢谢!

python xlrd

5
推荐指数
2
解决办法
5963
查看次数

PostgreSQL查询包括WITH子查询

从下表(已命名status)中,我需要提取状态为'01'2015年底的城镇代码.该列status_date存储城镇更改其状态的日期.

gid  | town      | status  | status_date
-----+-----------+---------+-------------
1    | 86001     | 00      | 2000-01-01
2    | 86001     | 01      | 2016-03-01
3    | 86002     | 01      | 2000-01-01
4    | 86003     | 00      | 2000-01-01
5    | 86003     | 01      | 2015-03-01
6    | 86003     | 02      | 2015-09-01
Run Code Online (Sandbox Code Playgroud)

我可以使用以下有点长的查询来实现这一点:

WITH tab AS (SELECT town, MAX(status_date) FROM status GROUP BY town)

  SELECT 
    t.town

  FROM tab t
    LEFT JOIN status s ON t.town …
Run Code Online (Sandbox Code Playgroud)

sql postgresql greatest-n-per-group

5
推荐指数
1
解决办法
646
查看次数

使用SublimREPL插件更改Python版本以评估文件

我在Mac OS X El Capitan上使用Sublim Text 3.我需要做的是评估Sublime Text 3中的Python文件.

我已安装Package Control然后SublimREPL插件.

我已经设置了2行layout(View > Layout > Rows: 2),以便在屏幕的第二部分显示Python解释器.

然后我用Tools > Command Palette... > SublimeREPL: Python.启动Python解释器.

在此输入图像描述

解释器正确启动,我得到了这个:

在此输入图像描述

我找不到如何从我手动下载的Python 3.5开始(因此安装/usr/local/bin/).我试图修改这个文件:/Library/Application Support/Sublime Text 3/Packages/SublimeREPL/Config/Python/Main.sublime-menu遵循这篇文章说明,但这并没有改变任何东西(Python 2.7.10仍然推出).

这是我的内容Main.sublime-menu:

[
     {
        "id": "tools",
        "children":
        [{
            "caption": "SublimeREPL",
            "mnemonic": "R",
            "id": "SublimeREPL",
            "children":
            [
                {"caption": "Python",
                "id": "Python",

                 "children":[
                    {"command": "repl_open",
                     "caption": "Python",
                     "id": "repl_python",
                     "mnemonic": "P",
                     "args": {
                        "type": "subprocess",
                        "encoding": …
Run Code Online (Sandbox Code Playgroud)

python macos sublimerepl sublimetext3 osx-elcapitan

5
推荐指数
1
解决办法
615
查看次数

从WHERE子句中的日期中提取年份

我需要EXTRACT()WHERE子句中包含函数,如下所示:

SELECT * FROM my_table WHERE EXTRACT(YEAR FROM date) = '2014';
Run Code Online (Sandbox Code Playgroud)

我收到这样的消息:

pg_catalog.date_part(unknown, text) doesn't exist** 
SQL State 42883
Run Code Online (Sandbox Code Playgroud)

这是my_table内容(gid INTEGER, date DATE):

  gid  |    date
-------+-------------
  1    | 2014-12-12
  2    | 2014-12-08
  3    | 2013-17-15
Run Code Online (Sandbox Code Playgroud)

我必须这样做,因为查询是从网站上包含“年份”字段的网站上的表单发送的,用户在其中输入4位数字的年份。

postgresql types date where-clause

3
推荐指数
2
解决办法
1万
查看次数

如何使用PostgreSQL在视图定义中保留注释?

当我从复杂查询创建视图时,我需要保留我在SQL查询中添加的注释,以便更容易地返回到视图定义.在pgAdminIII中,当我创建一个视图然后查阅视图定义时,注释被删除并且缩进完全修改了......有没有办法改变这种行为?

查看创建:

CREATE OR REPLACE VIEW public.v_test AS 

-- Count number of null lines within table 'test'
(SELECT * FROM public.test WHERE client IS NULL);
Run Code Online (Sandbox Code Playgroud)

创建后查看定义,如pgAdminIII中所示:

-- View: v_test

-- DROP VIEW v_test;

CREATE OR REPLACE VIEW v_test AS 
 SELECT test.gid,
    test.client
   FROM test
  WHERE test.client IS NULL;

ALTER TABLE v_test
  OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

感谢帮助!

postgresql comments indentation pgadmin

3
推荐指数
2
解决办法
1103
查看次数

INSERT失败,因为主键已存在

我正在使用PostgreSQL 9.4和pgAdminIII 1.20客户端.在INSERT特定表上启动时,我收到一条错误消息:Details: the key (gid)=(31509) already exists. (SQL State: 23505).

我没有在命令中输入gid值,以便让序列完成工作:

INSERT INTO geo_section (idnum, insee, ident) VALUES (25, '015233', '') ;
Run Code Online (Sandbox Code Playgroud)

序列定义如下:

CREATE SEQUENCE geo_section_gid_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 31509
  CACHE 1;
ALTER TABLE geo_section_gid_seq
  OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

以下查询返回34502:

SELECT max(gid) FROM geo_section ;
Run Code Online (Sandbox Code Playgroud)

因此,我试图改变序列以便从34503以下序列开始:

ALTER SEQUENCE geo_section_gid_seq START 34503 ;
Run Code Online (Sandbox Code Playgroud)

我收到一条成功消息,说明查询已正确执行.但序列START参数仍然31509有价值......

postgresql primary-key sequence postgresql-9.4

1
推荐指数
1
解决办法
1338
查看次数