我已经尝试了一些变化,但是从我对文档的阅读中,这个模式应该可行'' || 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)
Run Code Online (Sandbox Code Playgroud)
Qua*_*noi 11
将a NULL与非空字符串连接会产生一个NULL
由于您的*_val列可以为空,因此可能正在发生的事情.
试试这个:
'' || COALESCE(float_val::TEXT, '') || COALESCE(int_val::TEXT, '') || COALESCE(char_val, '') || COALESCE(text_val, '')
Run Code Online (Sandbox Code Playgroud)
或者,如果您最多只能有一个非空值,只需:
COALESCE(float_val::TEXT, int_val::TEXT, char_val, text_val, '')
Run Code Online (Sandbox Code Playgroud)
请注意PostgreSQL,与其他引擎不同,TEXT它没有任何缺点VARCHAR.分离TEXT和VARCHAR数据没有意义.
| 归档时间: |
|
| 查看次数: |
6244 次 |
| 最近记录: |