在做業務數據分析的時候,可能會遇到這樣一個場景,需要将多個字段進行拼接,變為一個長字符串
比如年、月、日三個字段拼接成完整的日期,或者姓、名兩個字段拼接成姓名列
這就需要用到SQL查詢中串聯(拼接)方法,這在不同數據庫中語法會有差異,下面會演示MySQL、Oracle、PostgreSQL、SQL Server這四種數據庫中的實現方法。
1、插入數據
這裡用的是MySQL數據庫,插入原始數據,用于後面的實驗
其他數據庫的插入語法,可能會有細微差别,可自行調整
CREATE TABLE IF NOT EXISTS `students` (
`id` varchar(10) NOT NULL,
`name` varchar(10) NOT NULL,
`age` datetime NOT NULL,
`sex` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;
insert into `students` values('01' , '趙雷' , '1990-01-01' , '男');
insert into `students` values('02' , '錢電' , '1990-12-21' , '男');
insert into `students` values('03' , '孫風' , '1990-05-20' , '男');
insert into `students` values('04' , '李雲' , '1990-08-06' , '男');
insert into `students` values('05' , '周梅' , '1991-12-01' , '女');
得到數據的形式
2、在MySQL中進行串聯拼接
使用concat函數對不同字段進行拼接,用法:
select concat(列1,列2,列3...) from...
我們對上表中name、age字段進行串聯:
SELECT concat(a.name,'的生日是:',a.age) FROM `students` a
結果:
2、在PostgreSQL、Oracle中進行串聯拼接
使用||符号對不同字段進行拼接,用法:
select 列1 || 列2 || 列3... from...
我們對上表中name、age字段進行串聯:
SELECT a.name || '的生日是:' || a.age FROM students a
使用 符号對不同字段進行拼接,用法:
select 列1 列2 列3... from...
我們對上表中name、age字段進行串聯:
SELECT a.name '的生日是:' convert(varchar,a.age) FROM students a
這裡要注意SQL Server中的 隻可以用于字符串類型的字段拼接,不能将字符串與數字、日期等其他類型混合拼接,所以如果你想拼接非字符串類型,可以用 convert函數進行字符串的轉換。
當然 SQL Server中的 也可以用于數值間的相加,也就是加法運算
其他數據庫的用法與上述這些大同小異,不再一一列舉。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!