GVKun编程网logo

PostgreSQL:按列排序,具有特定的NON-NULL值LAST(plsql排序语句order by)

22

如果您对PostgreSQL:按列排序,具有特定的NON-NULL值LAST和plsql排序语句orderby感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解PostgreSQL:按列排序,具有

如果您对PostgreSQL:按列排序,具有特定的NON-NULL值LASTplsql排序语句order by感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解PostgreSQL:按列排序,具有特定的NON-NULL值LAST的各种细节,并对plsql排序语句order by进行深入的分析,此外还有关于centos 7下源码编译安装php支持PostgreSQL postgresql手册 postgresql官网下载 postgresql视频教、php – postgresql在查询时插入null值、PostgreSQL 9.4 – 比较NULL值、postgresql – Postgres COPY FORCE_NOT_NULL选项无法识别的实用技巧。

本文目录一览:

PostgreSQL:按列排序,具有特定的NON-NULL值LAST(plsql排序语句order by)

PostgreSQL:按列排序,具有特定的NON-NULL值LAST(plsql排序语句order by)

当我发现时NULLS LAST,我有点希望它可以CASEORDER BY查询部分的语句中泛化为“ X LAST” 。

事实并非如此。

我正在尝试按两列对表进行排序(简单),但是以特定的顺序(简单)获得输出,其中 一个特定值的一列最后出现 (完成它……很丑)。

假设这些列是zone并且status(不要怪我命名列zone-我没有给它们命名)。status仅采用2个值(“ U”和“
S”),而zone可以采用约100个值中的任何一个。

zone的值的一个子集是(在伪正则表达式中)IN[0-7]Z,而这些值在结果中排​​在第一位。使用可以很容易地做到这一点CASE

zone 也可以采用值’Future’,该值应在结果中显示为LAST。

以我典型的kludgy-munge方式,我简单地将CASE值设置为1000,如下所示:

group by zone, statusorder by ( case when zone=''IN1Z'' then 1      when zone=''IN2Z'' then 2      when zone=''IN3Z'' then 3        .        . -- other IN[X]Z etc        .      when zone = ''Future'' then 1000      else 11 -- [number of defined cases +1]      end), zone, status

这行得通,但显然很麻烦,我想知道是否可能有一个班轮做同样的事情。
有没有更清洁的方法来达到相同的结果?

答案1

小编典典

Postgres允许booleanORDER BY子句中使用值,因此这是您的generalised ''X LAST''

ORDER BY (my_column = ''X'')

表达式的计算结果为boolean,结果值按以下方式排序:

FALSE (0)TRUE (1)NULL

由于我们处理非null值,这就是我们所需要的。这是您的一线客:

...ORDER BY (zone = ''Future''), zone, status;

centos 7下源码编译安装php支持PostgreSQL postgresql手册 postgresql官网下载 postgresql视频教

centos 7下源码编译安装php支持PostgreSQL postgresql手册 postgresql官网下载 postgresql视频教

1. 下载源码

$ mkdir /usr/downloads
$ wget -c http://cn2.php.net/distributions/php-5.6.20.tar.gz
$ tar -xvf php-5.6.20.tar.gz
$ mv php-5.6.20 /usr/local/src
$ cd !$ & cd php-5.6.20
登录后复制

2. 阅读安装指导

$ ls -also
$ less README
$ less INSTALL
登录后复制

3. 安装依赖包

$ yum install apr apr-util apr-devel apr-util-devel prce lynx
登录后复制

4. 安装httpd

$ wget -c http://apache.fayea.com//httpd/httpd-2.4.20.tar.gz
$ tar -xvf httpd-2.4.20.tar.gz
$ cd httpd-2.4.20
$ ./configure \
--prefix=/usr/local/programs/apache2 \
--enable-rewrite \
--enable-so \
--enable-headers \
--enable-expires \
--with-mpm=worker \
--enable-modules=most \
--enable-deflate \
--enable-module=shared
$ make
$ make install
$ cd /usr/local/programs/apache2
$ cp bin/apachectl /etc/init.d/httpd ## 复制启动脚本
$ /etc/init.d/httpd start ## 启动apache服务器,访问http://localhost/
$ egrep -v ''^[ ]*#|^$'' /usr/local/apache2/conf/httpd.conf | nl ## 查看apache服务器的配置
## 将apache加入系统服务
vi /etc/rc.d/rc.local
```
/usr/local/programs/apache2/bin/apachectl start
```
$ cat /etc/rc.local
登录后复制

4. 安装postgresql

立即学习“PHP免费学习笔记(深入)”;

$ yum install readline-devel  ## 安装readline依赖
$ cd /usr/downloads
$ wget -c https://ftp.postgresql.org/pub/source/v9.5.0/postgresql-9.5.0.tar.bz2
$ tar -xvf postgresql-9.5.0.tar.bz2
$ cd postgresql-9.5.0
$ ./configure --prefix=/usr/local/programs/postgresql
$ make
$ su
$ make install
$ /sbin/ldconfig /usr/local/programs/postgresql/lib ## 刷新下共享动态库
$ cd /usr/local/programs/postgresql
$ bin/psql --version  ## 检查运行情况
## 开始对postgresql的配置
$ vi /etc/profile.d/postgresql.sh ## 增加环境变量,不推荐直接在/etc/profile中添加,系统更新升级时会需要merge
``` 
PATH=/usr/local/programs/postgresql:$PATH
export PATH
```
$ source /etc/profile ## 更新环境变量

## 增加用户和其他文件夹
$ adduser postgres
$ passwd postgres 
$ mkdir /usr/local/programs/postgresql/logs
$ mkdir /usr/local/programs/postgresql/data
$ chown postgres /usr/local/programs/postgresql/data
$ su - postgres

## 初始化数据库
$ ./bin/initdb -D ./data
$ ./bin/createdb test
$ ./bin/psql test
## 已有数据库,可导入data文件夹后尝试root访问,假如带密码,可能需要进一步研究下
$ ./bin/postgres -D ./data >./logs/start-log-1.log 2>&1 &
$ ./bin/psql --list  ##列出数据库
## ok,安装完成

## 自定义设置,权限控制等,可以跳过,等熟悉使用后再做
## 编辑数据库配置及权限文件:
$ vi /usr/local/programs/postgresql/data/postgresql.conf   ## 数据库配置文件
$ chown postgres postgresql.conf
$ chmod 644 postgresql.conf
$ vi /usr/local/programs/postgresql/data/pg_hba.conf   ## 权限文件
$ vi /usr/local/programs/postgresql/data/pg_ident.conf

## 设置开机自启动:
$ vi /etc/rc.d/rc.local    ## 添加如下内容
```
/usr/local/programs/postgresql/bin/postgresql start
```
登录后复制

5. 安装php

## 源码已经在第一步中下载,现在开始安装:
$ yum install libxml2 libxml2-devel libpng libpng-devel libjpeg libjpeg-devel freetype freetype-devel
$ ./configure \
--prefix=/usr/local/programs/php \
--with-apxs2=/usr/local/programs/apache2/bin/apxs \
--with-zlib \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-zlib-dir \
--enable-mbstring \
--with-pgsql=/usr/local/programs/postgresql \
--with-pdo-pgsql=/usr/local/programs/postgresql 
$ make
$ make test
> Bug #42718 (unsafe_raw filter not applied when configured as default filter) [ext/filter/tests/bug42718.phpt]  XFAIL REASON: FILTER_UNSAFE_RAW not applied when configured as default filter, even with flags
> Bug #67296 (filter_input doesn''t validate variables) [ext/filter/tests/bug49184.phpt]  XFAIL REASON: See Bug #49184
> Bug #53640 (XBM images require width to be multiple of 8) [ext/gd/tests/bug53640.phpt]  XFAIL REASON: Padding is not implemented yet
> zend multibyte (7) [ext/mbstring/tests/zend_multibyte-07.phpt]  XFAIL REASON: https://bugs.php.net/bug.php?id=66582
> zend multibyte (9) [ext/mbstring/tests/zend_multibyte-09.phpt]  XFAIL REASON: https://bugs.php.net/bug.php?id=66582
>Bug #70470 (Built-in server truncates headers spanning over TCP packets) [sapi/cli/tests/bug70470.phpt]  XFAIL REASON: bug is not fixed yet

## 查阅官方的bug,发现:
> id=66582: status : Closed. Fixed in master (PHP7)
> id=42718: status : Assigned
> id=42718: reference to id=49184, unsolved for many years
## 那就不关心了,直接装吧
$ make install
> You may want to add: /usr/local/programs/php/lib/php to your php.ini include_path

## 那就按它说的设置吧
$ cp php.ini-development /usr/local/programs/php/lib/php.ini
```
include_path = ".;/usr/local/programs/php/lib/php"

## 然后,编辑httpd的设置,确保其能正确解析php文件
```
...
LoadModule php5_module modules/libphp5.so
...
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .php5

...
<ifmodule dir_module>
    DirectoryIndex index.html index.php
</ifmodule>     
```

## 重启httpd,测试
$ cd /usr/local/programs/apache2
$ bin/httpd -h
$ bin/httpd -k stop
$ bin/httpd -f conf/httpd.conf
## 默认设置的www页面在./htdocs/下,那就先去里面建一个测试页面吧
$ vi htdocs/index.php
```
<?php phpinfo(); ?>
```
$ curl http://localhost/index.php |grep postgresql
#ok
登录后复制

后续应该做的事

* 1. 启动时,不需要要手动指定配置文件
* 2. php初始化www目录设置
* 3. php 用户、权限管理等

'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了centos 7下源码编译安装php支持PostgreSQL,包括了postgresql,centos 7方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

php – postgresql在查询时插入null值

php – postgresql在查询时插入null值

在我的 PHP代码查询中,当我将一个空值时,我得到一些错误
进入表格.列名“number1”,“number2”和“number3”是整数,可以具有空值.

如果没有空值,则查询有效

查询是这样的
插入表(number1,number2,number3)值(1,2,3);

但是当我在PHP上的输入表单上留下一个空白值时,

例如,我不会为列“number2”设置值,查询将会显示
像这样.

插入表(number1,3);

它说ERROR:语法错误在或附近“,”
sql状态:42601

有没有人知道如何解决这个问题?

这个查询可能是解决方案,但还有其他方法吗?
insert into table(number1,number3)values(1,null,3);

因为我有这么多变量,并且有点懒,放置一些条件,比如当该变量返回空值时,则值=“null”

通过键入NULL插入NULL值:
INSERT INTO table(number1,number3) VALUES (1,NULL,3);

如果你有一个变量,并且当该变量为空时你想要插入一个NULL值,你可以使用带有单引号括起来的变量的NULLIF来为此做准备(这是一个有点脏的解决方案,因为你必须将变量视为一个空字符串然后将其转换为整数):

INSERT INTO table(number1,NULLIF('$var','')::integer,3);

PostgreSQL 9.4 – 比较NULL值

PostgreSQL 9.4 – 比较NULL值

在正常情况下,将NULL值与任何其他值进行比较会产生另一个NULL值.
SELECT NULL = NULL;

返回NULL

在比较任意行时,这(大多数情况下)是正确的,如the documentation,9.23.5. Row Constructor Comparison中所述:

SELECT ROW(1,NULL,'baz text') = ROW(1,'baz text');

返回NULL

但是,在比较定义良好的复合类型时,NULL值被视为相等.

CREATE TYPE test_type AS (
    foo INTEGER,bar BIGINT,baz TEXT
);

SELECT (1,'baz text')::test_type = (1,'baz text')::test_type;

返回TRUE

这种行为似乎没有记录(我看过并发现没有对行为的引用).

我想使用此行为来实现一些业务规则,并希望确保这样做是安全的.

>这与任何sql规范一致吗?
>未来可能会发生变化吗?

我在 official documentation中发现了这一点:[…]在比较两个复合类型值的其他上下文中,两个NULL字段值被认为是相等的,并且认为NULL大于非NULL.这对于复合类型具有一致的排序和索引行为是必要的.我认为这可以解决您的问题.

postgresql – Postgres COPY FORCE_NOT_NULL选项无法识别

postgresql – Postgres COPY FORCE_NOT_NULL选项无法识别

我正在尝试使用copY命令将CSV文件导入Postgres 9.2.对于所有列,CSV中的空字符串必须解释为NULL,但一列除外.

我相信FORCE_NOT_NULL选项意味着允许这个,但是当我输入以下命令时:

copY migr_escolas  from ''C:\escolas.csv'' 
     WITH DELIMITER '','' CSV HEADER FORCE_NOT_NULL;

我收到以下消息:

ERROR:  Syntax error next to "FORCE_NOT_NULL" 
LINE 16: ...om ''C:\escolas.csv'' WITH DELIMITER '','' CSV HEADER FORCE_NOT_...

是否真的支持FORCE_NOT_NULL?如果是这样的话语法是什么?

系统信息:

"Postgresql 9.2.1,compiled by Visual C++ build 1600,64-bit"
Windows 7 64 bits

解决方法

正如上面joop的评论所指出的那样,应该使用FORCE NOT NULL而不是FORCE_NOT_NULL.

今天关于PostgreSQL:按列排序,具有特定的NON-NULL值LASTplsql排序语句order by的介绍到此结束,谢谢您的阅读,有关centos 7下源码编译安装php支持PostgreSQL postgresql手册 postgresql官网下载 postgresql视频教、php – postgresql在查询时插入null值、PostgreSQL 9.4 – 比较NULL值、postgresql – Postgres COPY FORCE_NOT_NULL选项无法识别等更多相关知识的信息可以在本站进行查询。

本文标签: