不幸的是,我有类似下面的表格:法从非标准标记字符串值的PostgreSQL
DROP TABLE IF EXISTS my_list;
CREATE TABLE my_list (index int PRIMARY KEY, mystring text, status text);
INSERT INTO my_list
(index, mystring, status) VALUES
(12, '', 'D'),
(14, '[id] 5', 'A'),
(15, '[id] 12[num] 03952145815', 'C'),
(16, '[id] 314[num] 03952145815[name] Sweet', 'E'),
(19, '[id] 01211[num] 03952145815[name] Home[oth] Alabama', 'B');
有什么诀窍从上面显示的文本mystring
走出[id]
数量integer
?仿佛我跑下面的查询:
SELECT index, extract_id_function(mystring), status FROM my_list;
,并得到了类似的结果:
12 0 D
14 5 A
15 12 C
16 314 E
19 1211 B
优选仅简单的字符串函数,如果没有正则表达式将被罚款。
**总是在问题**中指定PostgreSQL版本。 (请在完成后进行编辑和评论)。然后请找出设计该架构的人并向他们说明意思;-)。无论如何,我会给出答案。 –
另外,*为什么*你想避免正则表达式?有时他们是工作的正确工具。尤其是考虑到SQL中的字符串操作有多痛苦,因为无法在同一查询级别的其他位置轻松引用值。 –
我在Windows 7上的实际版本是9.1。我使用正则表达式对查询进行了一些测试,然后发现该正则表达式在unicode字母方面存在问题,而这些字母常常是我的语言,所以我不能使用它可靠。很明显,我做出了这个shema,我准备好为自己说:)但是今天我绝对不会那么做。用于我使用的编程。NET这样的表达式不是问题,但我对PostgreSQL的想法不够。 –