小编rag*_*885的帖子

子查询返回多列 - 或近似

我有一个有趣的问题,但是我不知道如何更好地表达它比说我有一个需要返回多列的子查询.当我试图这样做时,PostgreSQL会抛出一个错误,所以虽然我的SQL在某种程度上听起来对我来说很明显 - 显然有一种更好的方法可以做到这一点.我正在尝试将用户权限合并到一个表中(希望将其放入视图或甚至是各种类型的"物化视图").这是我的表格:

CREATE TABLE users (
  user_id integer NOT NULL,
  username character varying(32) NOT NULL,
  passwd character varying(32) NOT NULL,
  dept_id integer NOT NULL,
  last_activity timestamp with time zone NOT NULL DEFAULT now(),
  CONSTRAINT "pk-users-user_id" PRIMARY KEY (user_id)
);

CREATE TABLE groups (
  group_id integer NOT NULL,
  group_name character varying(32) NOT NULL,
  add_posts integer NOT NULL DEFAULT 0,
  remove_posts integer NOT NULL DEFAULT 0,
  modify_users integer NOT NULL DEFAULT 0,
  add_users integer NOT NULL DEFAULT 0,
  delete_users integer NOT …
Run Code Online (Sandbox Code Playgroud)

sql postgresql permissions usergroups

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

简化正则表达式?

我有以下正则表达式:

(?i:^TPI$|^TIP$|^IPT$|^ITP$|^PIT$|^PTI$|^IP$|^PI$|^TI$|^IT$|^PT$|^TP$|^T$|^P$|^I$)
Run Code Online (Sandbox Code Playgroud)

我该如何简化它?我的正则表达知识相当有限.

我的要求是:

  • 可接受的输入为"T","P"和"I"
  • 值可以按任何顺序排列
  • 每个值中只有一个被接受."TTI"无效,但"TI"有效
  • 不区分大小写

我用了

^(?i:[TPI]){1,3}$
Run Code Online (Sandbox Code Playgroud)

在过去,这主要是有效的.唯一的问题是它接受多个值"TTT"是可以接受的正则表达式,我需要它失败).

regex

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

正则表达式匹配百分比与小数?

我正在尝试构建一个正则表达式(.NET)来匹配一个百分比与4位小数.小数点后4位是必需的.范围看起来像:

0.0001 to 100.0000 
Run Code Online (Sandbox Code Playgroud)

到目前为止,我想出了:

(?:[^0]+[1-100]{1,3})\.(?:\d{4})
Run Code Online (Sandbox Code Playgroud)

但是,我对如何在此表达式中添加一些其他要求有点不确定.我需要:

  • 小数点前没有前导零.允许42.4214,042.4214不允许.允许1.0000,但001.0000不允许.等等..
  • 小数点前允许最多3个字符,不带前导零.
  • 如果小数点前的数字是100,则不允许小数点后的数字为0000以外的数字,因此允许100.0000,但不允许100.0135.(这是否可以使用正则表达式?)

感谢帮助!

.net regex decimal percentage

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

PHP fopen()总是返回NULL

我正在尝试打开一个文件进行解析(二进制文件),但无论fopen()总是返回NULL.

我已经排除了几乎所有的东西,我只需要一个测试脚本:

<?php
$idx = fopen('/usr/home/username/web/appname/dev/www/debug/18194001.idx','r');
trigger_error(var_export($idx,true));
exit();
Run Code Online (Sandbox Code Playgroud)

来自trigger_error(var_export())的输出; 是:

[31-Mar-2013 16:30:34 UTC] PHP Notice:  NULL in /usr/home/username/web/appname/dev/www/debug/ajax.idx.php on line 3
Run Code Online (Sandbox Code Playgroud)

无论我为第二个fopen()选项指定了什么标志,我都得到相同的结果.

现在,显而易见的问题是文件是否存在,我是否有权阅读它?两者的答案都是肯定的.我已经使用了相对路径和绝对路径,都读取了正确的文件.file_get_contents()也读取文件没有问题.

is_readable()和file_exists()都返回true

该文件的ls -lah输出为:

-rwxrwxrwx   1 username  username  2.0K Mar 30 15:02 18194001.idx
Run Code Online (Sandbox Code Playgroud)

其中'username'与web服务器进程和PHP(lighttpd和php-fpm)运行的用户名匹配.父目录还具有user/group/all的读/读/读权限.

我已经尝试了其他文件,我注意到我在fopen抛出的任何东西都返回了一个NULL值.

救命?

PHP信息:

PHP 5.4.6 (cli) (built: Oct 10 2012 10:43:19)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
    with XCache v2.0.1, Copyright (c) 2005-2012, by mOo
Run Code Online (Sandbox Code Playgroud)

Lighttpd信息:

lighttpd/1.4.31 (ssl) - a light and fast webserver
Build-Date: Sep …
Run Code Online (Sandbox Code Playgroud)

php fopen freebsd lighttpd

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