加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql中的concat列选择

发布时间:2020-12-13 18:06:17 所属栏目:百科 来源:网络整理
导读:我尝试了一些变化,但是从我对 the documentation的阅读中,这个模式应该可以正常工作”|| val1 || val1 …但我的结果是一个空列…… thedb=# d buildings_propertyvalue; Table "public.buildings_propertyvalue" Column | Type | Modifiers -----------+---
我尝试了一些变化,但是从我对 the documentation的阅读中,这个模式应该可以正常工作”|| val1 || val1 …但我的结果是一个空列……
thedb=# d buildings_propertyvalue;
                              Table "public.buildings_propertyvalue"
  Column   |          Type          |                              Modifiers                               
-----------+------------------------+----------------------------------------------------------------------
 id        | integer                | not null default nextval('buildings_propertyvalue_id_seq'::regclass)
 prop_id   | integer                | not null
 place_id  | integer                | not null
 float_val | double precision       | 
 int_val   | integer                | 
 char_val  | character varying(255) | 
 text_val  | text                   | 

thedb=# select * from buildings_propertyvalue limit 10;
 id  | prop_id | place_id | float_val | int_val | char_val | text_val 
-----+---------+----------+-----------+---------+----------+----------
 798 |       3 |      170 |           |     831 |          | 
   2 |      46 |      180 |           |       0 |          | 
 733 |       2 |      180 |        40 |         |          | 
 737 |      10 |      180 |           |       0 |          | 
 740 |       5 |      345 |       100 |         |          | 
 742 |      10 |      345 |           |       0 |          | 
  11 |       2 |      170 |        50 |         |          | 
 744 |      11 |      345 |         0 |         |          | 
 746 |      14 |      345 |           |         | 52       | 
 749 |      46 |      348 |           |       0 |          | 
(10 rows)

thedb=# select prop_id,place_id,'' || float_val || int_val || char_val || text_val as val from buildings_propertyvalue limit 10;
 prop_id | place_id | val 
---------+----------+-----
       3 |      170 | 
      46 |      180 | 
       2 |      180 | 
      10 |      180 | 
       5 |      345 | 
      10 |      345 | 
       2 |      170 | 
      11 |      345 | 
      14 |      345 | 
      46 |      348 | 
(10 rows)
将NULL与非空字符串连接会产生NULL

由于您的* _val列可以为空,因此可能正在发生的事情.

试试这个:

'' || COALESCE(float_val::TEXT,'') || COALESCE(int_val::TEXT,'') || COALESCE(char_val,'') || COALESCE(text_val,'')

或者,如果您最多只能有一个非空值,只需:

COALESCE(float_val::TEXT,int_val::TEXT,char_val,text_val,'')

请注意,在PostgreSQL中,与其他一些引擎不同,TEXT has no downsides compared to VARCHAR.分离TEXT和VARCHAR数据毫无意义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读