我需要一个像这样的函数
SELECT vformat('Hello %%! Bye %%...', array['John','Maria'], '%%');
-- 'Hello John! Bye Maria...'
Run Code Online (Sandbox Code Playgroud)
提供带有占位符的字符串(模板)以及向量中的相应输入,它会返回文本。“占位符标记”是一个自由字符串。
我无法使用 pg9.1 格式(如 sprintf)函数,因为它不允许除 '%' 之外的其他标记(请参阅 ex. Python formatter)并且不允许数组参数(请参阅 ex. vsprintf)。PostgreSQL 9.0(我认为 8.4+)最简单的解决方案是
CREATE FUNCTION array_zipper_string(anyarray,anyarray) RETURNS text AS $$
-- use with bigger array at left
SELECT string_agg(t.val||coalesce($2[t.idx],''),'')
FROM (SELECT generate_subscripts($1, 1) AS idx, unnest($1) AS val) AS t;
$$ LANGUAGE SQL IMMUTABLE;
CREATE FUNCTION tpl_positional(text,anyarray,varchar DEFAULT '%%')
RETURNS text AS $$
SELECT array_zipper_string(string_to_array($1,$3),$2);
$$ LANGUAGE SQL IMMUTABLE;
CREATE FUNCTION tpl_positional(
text, text, …Run Code Online (Sandbox Code Playgroud) 我有一个ID对的表,它具有传递关系 t,即,如果"A t B"和"B t C"则是"A t C".样品:
table T1
ID1 | ID2
1 | 2
1 | 5
4 | 7
7 | 8
9 | 1
Run Code Online (Sandbox Code Playgroud)
所以有两组,
g1:{1,2,5,9}因为"1 t 2","1 t 5"和"9 t 1"g2:{4,7,8}因为"4 t 7"和"7 t 8"我需要通过"纯粹的标准SQL"生成新的表或视图:
table T2
ID1 | ID2 | LABEL
1 | 2 | 1
1 | 5 | 1
4 | 7 | 2
7 | 8 | 2
9 | 1 | 1
Run Code Online (Sandbox Code Playgroud)
PS -1:我们可以列出"传递组" …
NO-BREAK SPACE和许多其他UTF-8符号 需要2个字节才能表示 ; 因此,在UTF8字符串的假设上下文中,非ASCII(> 127)的隔离(非xC2前面)字节是一个不可识别的字符......好吧,它只是一个布局问题(!),但它破坏了整个字符串?
如何避免这种"非预期的行为"?(它出现在某些功能中,而不是在其他功能中).
示例(仅生成非预期行为preg_match):
header("Content-Type: text/plain; charset=utf-8"); // same if text/html
//PHP Version 5.5.4-1+debphp.org~precise+1
//using a .php file enconded as UTF8.
$s = "THE UTF-8 NO-BREAK\xA0SPACE"; // a non-ASCII byte
preg_match_all('/[-\'\p{L}]+/u',$s,$m);
var_dump($m); // empty! (corrupted)
$m=str_word_count($s,1);
var_dump($m); // ok
$s = "THE UTF-8 NO-BREAK\xC2\xA0SPACE"; // utf8-encoded nbsp
preg_match_all('/[-\'\p{L}]+/u',$s,$m);
var_dump($m); // ok!
$m=str_word_count($s,1);
var_dump($m); // ok
Run Code Online (Sandbox Code Playgroud) 由于我需要NodeJS的更新版本,我首先删除旧版本...
apt-get remove --purge nodejs
apt-get remove --purge node
apt-get autoremove
Run Code Online (Sandbox Code Playgroud)
... 安装完最后一个版本的NodeJS后,我运行了npm安装程序,
node --version # now is ok!
sudo apt-get install npm # ERROR!!!!
Run Code Online (Sandbox Code Playgroud)
那么,如何在此上下文中安装npm(在此清除过程之后)
编辑:
PS:正如我通过上面的链接和上面的内联评论所示,nodejs --version可以,很好,没问题.这个问题是关于npm和apt-get......现在我看到答案的一部分就在这里.
错误消息,与此类似问题相同
The following packages have unmet dependencies:
npm : Depends: nodejs but it is not going to be installed
Depends: node-abbrev (>= 1.0.4)
Depends: nodejs-dev
...
Depends: ... but it is not going to …Run Code Online (Sandbox Code Playgroud) MADlib是PostgreSQL中最完整,最高效(更快的功能)和可靠的数学库... 官方下载 没有关于Debian或UBUNTU"即插即用安装"的线索.
检查其他字体,最好(最简单)是2013年的apt-get它的旧指令.
...还有一些2014年的丢失脚本 ...评论说"可以下载.rpm软件包并安装在Ubuntu中只需将软件包转换为.deb使用Alien命令即可 ".
问题:安装MADLib的安全且最简单的方法是什么?
今天(2017年)在UBUNTU 16 LTS和PostgreSQL v9.6.
注意和次要问题:Debian stable和UBUNTU LTS是最受欢迎的Web服务器Linux发行版,因此.deb最重要的发行形式......为什么MADlab维护者拒绝看到它?为什么不欢迎.deb用户?
有一些技术或许可证问题apt或转换.deb?
我有两种类型的SQL服务器,如上所述的v9.6,但最重要的是PostgreSQL v9.5.X(对不起,我们想在所有服务器中使用v9.6).
PostgreSQL 9.5.X在UBUNTU 16 LTS(xenial)中的情况
psql --version并进入它,select version(); 显示v9.5.6.
命令pgxnclient install madlib显示
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application. ERROR: command …
此解决方法不起作用
CREATE FUNCTION json_array_castext(json) RETURNS text[] AS $f$
SELECT array_agg(x::text) FROM json_array_elements($1) t(x);
$f$ LANGUAGE sql IMMUTABLE;
-- Problem:
SELECT 'hello'='hello'; -- true...
SELECT (json_array_castext('["hello","world"]'))[1] = 'hello'; -- false!
Run Code Online (Sandbox Code Playgroud)
那么,如何获取文本的真实数组?
PS:使用所谓的“头等公民” JSONb,同样的问题。
编辑:@OtoShavadze好的答案(注释已解决!)之后,PostgreSQL开发人员的清单:为什么x::text 不进行强制转换?(使用第9.5.6页),为什么它不生成警告或错误?
正如我的上一个问题(请参阅此处的详细信息),我正在使用
SELECT encode(digest(x::text::bytea, 'sha1'), 'hex') FROM xtmp;
Run Code Online (Sandbox Code Playgroud)
未解决,与原始哈希值不同...也许是带有符号::text的强制内部表示\n,因此解决方案将直接转换为bytea,但这是无效的转换。
其他解决方法也不是解决方案,
SELECT encode(digest( replace(x::text,'\n',E'\n')::bytea, 'sha1' ), 'hex')
FROM xtmp
Run Code Online (Sandbox Code Playgroud)
...我尝试CREATE TABLE btmp (x bytea),COPY btmp FROM '/tmp/test.xml' ( FORMAT binary )但出现错误(“未知的复制文件签名”)。
这是计算整数 log2(n) 的朴素算法,
function ilog2(n) { // n is a positive non-zero BigInt
const C1 = BigInt(1)
const C2 = BigInt(2)
for(var count=0; n>C1; count++) n = n/C2
return count
} // example ilog2(16n)==4
Run Code Online (Sandbox Code Playgroud)
我正在测试优化(请参见下面的示例),但它们不是“用于 log2”,正如这里所评论的。
有什么更好的使用WebAssembly吗?
PS:如果不可能有一个通用的解决方案,为了解决我的问题,我可以使用像ilog2_64bits(n),WebAssembly 截断或忽略输入 BigInt 的一些位的函数 。
在纯 Javascript 中没有那么优化的示例(理想的是 WebAssembly!)......尝试改编BigInteger.js的 integerLogarithm() :
function ilog2_pe(value, base=2n) {
// example: ilog2_pe(255n) returns { p: 128n, e: 7n }
if (base <= value) {
let …Run Code Online (Sandbox Code Playgroud) 该c3js.org/samples/options_subchart显示问题:在X-规模没有任何标签由subchart选择的窗口导航时。
在此动态窗口视图中如何添加X轴标签?
这是未选择窗口的图表,
这是带有选定窗口的图表:
看到? 没有x轴标签,即使每个点都存在(在这种情况下为另一天)。
使用@schustischuster的示例进行编辑(并提供了更多数据) http://jsfiddle.net/xodyq92n/
// more x-axis data to show the problem
['x', '2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
'2013-01-05', '2013-01-06', '2013-01-07', '2013-01-08',
'2013-01-09', '2013-01-10', '2013-01-11', '2013-01-12',
'2013-01-13'
]
Run Code Online (Sandbox Code Playgroud)
注意@buræquete线索culling: false和子图控制画笔之后。我的现实生活数据有x轴约600个项目,因此不剔除会造成很大的模糊:
然后,该问题可以概括为“中间剔除”的需求。
问题:我需要一个UTF8“完全编码”的XML文件。也就是说,没有实体代表符号,所有由UTF8包围的符号,只有3个保留了XML的符号“&”(amp),“ <”(lt)和“>”(gt)。而且,我需要一个快速执行的内置函数:将实体转换为真正的UTF8字符(而不破坏XML)。
PS:这是一个“现实世界的问题”(!);例如,在PMC / journals中,有280万条科学论文,带有特殊的XML DTD(也称为JATS格式)...要处理为“常规XML-UTF8-文本”,我们需要从数字实体更改为UTF8字符
尝试的解决方案:此任务的自然功能是html_entity_decode,但它破坏了XML代码(!),从而转换了保留的3个XML保留的符号。
假设
$xmlFrag ='<p>Hello world!    Let A<B and A=∬dxdy</p>';
Run Code Online (Sandbox Code Playgroud)
必须将实体160(nbsp)和x222C(双整数)转换为UTF8,而XML保留的则lt不是。XML文本将(转换后),
$ xmlFrag =' <p>世界您好!令A <B和A =∬dxdy </p>';
文本“ A <B”需要保留XML的字符,因此必须保持为A<B。
我尝试html_entity_decode用于(直接!)解决问题。因此,我将PHP更新到v5.5,以尝试使用该ENT_XML1选项,
$s = html_entity_decode($xmlFrag, ENT_XML1, 'UTF-8'); // not working
// as I expected
Run Code Online (Sandbox Code Playgroud)
也许另一个问题是:“为什么没有其他选择可以实现我所期望的?” -这对其他许多XML应用程序(!)都很重要,不仅对我而言。
我不需要变通办法作为答案...好的,我展示了我的丑陋功能,也许它可以帮助您理解问题,
function xml_entity_decode($s) {
// here an illustration …Run Code Online (Sandbox Code Playgroud) postgresql ×5
javascript ×2
php ×2
algorithm ×1
apt-get ×1
arrays ×1
c3.js ×1
converter ×1
d3.js ×1
digest ×1
entity ×1
formatting ×1
installation ×1
json ×1
logarithm ×1
npm ×1
sql ×1
ubuntu ×1
utf-8 ×1
xml ×1