在 PostgreSQL 中使用 Select 連線列
-
在 PostgreSQL 中使用
||
連線VARCHAR
型別的列的運算子 -
操縱
SELECT
操作以使用||
當 PostgreSQL 中的列不是字串時 -
在 PostgreSQL 中使用
Typecast
(::
表示法) 進行連線 -
在 PostgreSQL 中使用
CAST(expression as type)
表示式 -
在 PostgreSQL 中使用簡單的
CONCAT(col1, col2)
操作 -
如果 PostgreSQL 中的一列是
NULL
,則使用COALESCE(variable, to_type)
進行連線
PostgreSQL 是一個物件關聯式資料庫系統,這意味著它可以支援比它的競爭者 MySQL
更復雜的資料型別。
今天我們將學習使用 SELECT
操作連線表的列。
在 PostgreSQL 中使用||
連線 VARCHAR
型別的列的運算子
現在,假設我們使用以下配置建立了一個表。
create table tab(
id int not null,
u_name varchar(50) not null,
PRIMARY KEY (u_name)
);
然後我們繼續往裡面插入一些值。
insert into tab values(45, 'Jonathon'), (56, 'Mark'), (68, 'Angel');
最後,呼叫 SELECT
中的連線運算子進行顯示。
select id || u_name from tab
所以我們會得到如下輸出。
輸出:
上面的查詢是如何工作的?我們使用||
Select
操作中的運算子。
||
運算子在 PostgreSQL 文件中僅定義為連線字串。
因此,連線其中一列必須是 VARCHAR
資料型別的列並不困難,因為 VARCHAR
對應於 String
。
操縱 SELECT
操作以使用||
當 PostgreSQL 中的列不是字串時
上面給出的 SELECT
查詢的一個非常簡單的修改可用於將任何其他資料型別的列連線在一起。
現在讓我們假設以下實現。
create table tab(
id int not null,
age int not null,
PRIMARY KEY (id)
);
insert into tab values(45, 21), (56, 22), (68, 23)
現在我們知道兩列都是 int
;因此,如果你嘗試這樣做。
select id || age from tab
它將返回一個錯誤。
輸出:
ERROR: operator does not exist: integer || integer
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
因此,這裡我們有兩個選擇:
- 在兩列之間連線一個 null
STRING
並使其成為有效操作。 - 將型別轉換新增到列值之一。
要提供前一個選項,你所要做的就是將查詢更改為類似的內容。
select id ||''|| age from tab
這將返回連線所有相鄰列的兩個數字。它在兩個 int
列之間連線一個空字串;因此,該操作對該運算子有效,因為至少存在一個 String
。
在 PostgreSQL 中使用 Typecast
(::
表示法) 進行連線
要執行此操作,我們可以使用:
select id::text || age from tab
或者
select id|| age::text from tab
此型別將其中一列轉換為 Text
型別,使操作再次有效,因為現在存在一個 String
。
在史前 PostgreSQL 中,這種表示法通常用於將有效型別轉換為任何其他型別。
在 PostgreSQL 中使用 CAST(expression as type)
表示式
::
符號以更好的對應物 CAST()
結尾。對於只看程式碼不知道::
做什麼的初學者來說,它是有效且更容易理解的。
select CAST(id as varchar(50)) || age from tab
在 PostgreSQL 中使用簡單的 CONCAT(col1, col2)
操作
如果你不想進行任何轉換,請使你的程式碼儘可能簡單。你可以切換到連線和接受任何給定資料型別的 CONCAT()
函式。
select concat(id, age) from tab
如果 PostgreSQL 中的一列是 NULL
,則使用 COALESCE(variable, to_type)
進行連線
如果變數為 null、0 或其他值,我們使用 COALESCE(variable, to_type)
,以便它保持有效並且不顯示 NULL
。
在我們的例子中,將我們的 NULL
列值轉換為有效的 String
型別,以便正確連線。
讓我們使用以下配置。
create table tab(
id int not null,
age int,
PRIMARY KEY (id)
);
insert into tab values(45, 21), (56, NULL), (68, 23);
我們為表中的第二組值插入了一個 NULL
。
如果我們現在執行此操作。
select id::text || age from tab;
它將返回:
輸出:
所以我們可以在這裡呼叫 COALESCE()
。
select coalesce(id, 0)::text || coalesce(age, 0) from tab;
這往往會返回正確的輸出,現在將 NULL
值替換為 0。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub