一、SQL查詢結(jié)果拼接字符
1、將兩個查詢結(jié)果拼接成一個字符串:
SELECT CONCAT(name, age) FROM students;
這個語句會將每位學(xué)生的姓名和年齡拼接在一起,成為一個字符串。
2、使用自定義字符拼接查詢結(jié)果:
SELECT CONCAT(name, ' - ', age) FROM students;
這個語句會將每位學(xué)生的姓名和年齡以“ - ”作為間隔符拼接在一起,成為一個字符串。
3、使用多個字段進行字符串拼接:
SELECT CONCAT(first_name, ' ', last_name, ' is ', age, ' years old.') FROM person;
這個語句會將每個人的姓、名、年齡信息拼接成一個完整的句子。
二、SQL查詢結(jié)果拼接字符串
1、使用COALESCE函數(shù)將多個字段值進行拼接:
SELECT COALESCE(first_name, '') || ' ' || COALESCE(last_name, '') as full_name FROM person;
這個語句會將每個人的姓、名信息拼接成一個完整的名字。
2、使用CONCAT_WS函數(shù)進行字符串拼接:
SELECT CONCAT_WS(',', first_name, last_name) as full_name FROM person;
這個語句會將每個人的姓、名信息以逗號作為間隔符拼接在一起,成為一個字符串。
3、使用GROUP_CONCAT函數(shù)拼接多行字符串:
SELECT GROUP_CONCAT(name SEPARATOR '-') FROM students;
這個語句會將每個學(xué)生的姓名以“-”作為間隔符拼接在一起,成為一個字符串。
三、兩個SQL查詢結(jié)果拼接
1、使用UNION將兩個查詢結(jié)果進行拼接:
SELECT name FROM students WHERE age = 18 UNION ALL SELECT name FROM students WHERE age = 19;
這個語句會將年齡為18歲和19歲的學(xué)生姓名查詢結(jié)果拼接在一起。
2、使用JOIN將兩個查詢結(jié)果進行拼接:
SELECT a.name, b.age FROM students a JOIN students b WHERE a.id = b.id;
這個語句會將同一學(xué)生的姓名和年齡查詢結(jié)果拼接在一起,形成一張新表。
四、SQL將查詢的結(jié)果拼接
1、使用FOR XML PATH函數(shù)進行結(jié)果拼接:
SELECT STUFF((SELECT ', ' + name FROM students FOR XML PATH('')), 1, 1, '') as student_names;
這個語句會將每個學(xué)生的姓名拼接成一個字符串,使用逗號作為間隔符。
2、使用CURSOR循環(huán)逐行拼接結(jié)果:
DECLARE @name VARCHAR(50), @result VARCHAR(MAX); DECLARE student_cursor CURSOR FOR SELECT name FROM students; OPEN student_cursor; FETCH NEXT FROM student_cursor INTO @name; WHILE @@FETCH_STATUS = 0 BEGIN SET @result = CONCAT(@result, @name, ', '); FETCH NEXT FROM student_cursor INTO @name; END CLOSE student_cursor; SELECT LEFT(@result, LEN(@result) - 2);
這個語句會使用CURSOR循環(huán)逐行拼接每個學(xué)生的姓名,最后使用逗號作為間隔符拼接成一個字符串。
五、將SQL結(jié)果拼接在一起
1、使用BULK INSERT將多個文件或表的數(shù)據(jù)一起拼接:
CREATE TABLE tmp ( name VARCHAR(50), age INT ); BULK INSERT tmp FROM 'data1.csv' WITH (FORMAT='CSV', FIELDTERMINATOR=',', ROWTERMINATOR='\n'); BULK INSERT tmp FROM 'data2.csv' WITH (FORMAT='CSV', FIELDTERMINATOR=',', ROWTERMINATOR='\n'); SELECT * FROM tmp;
這個語句會將兩個CSV文件的數(shù)據(jù)分別插入到一個表中,最后將兩個表的數(shù)據(jù)拼接成一個完整的表。
2、使用INSERT INTO SELECT將多個表的數(shù)據(jù)一起拼接:
CREATE TABLE students_new ( name VARCHAR(50), age INT ); INSERT INTO students_new SELECT name, age FROM students_v1 UNION ALL SELECT name, age FROM students_v2;
這個語句會將兩個表的學(xué)生姓名和年齡字段值一起插入到一個新表中,形成完整的學(xué)生信息表。
六、SQL查詢結(jié)果拼接成一行
1、使用GROUP_CONCAT函數(shù)將多行結(jié)果拼接成一行:
SELECT GROUP_CONCAT(name SEPARATOR ', ') FROM students;
這個語句會將所有學(xué)生的姓名拼接成一行,使用逗號作為間隔符。
2、使用XML PATH函數(shù)將多行結(jié)果拼接成一行:
SELECT STUFF((SELECT ', ' + name FROM students FOR XML PATH('')), 1, 1, '') as student_names;
這個語句同樣會將所有學(xué)生的姓名拼接成一行,使用逗號作為間隔符。
七、SQL查詢結(jié)果排序
1、使用ORDER BY函數(shù)按照某個字段進行結(jié)果排序:
SELECT name, age FROM students ORDER BY age DESC;
這個語句會按照學(xué)生的年齡進行降序排列。
2、使用CASE函數(shù)按照多個字段進行結(jié)果排序:
SELECT name, age, CASE WHEN age < 20 THEN 'young' WHEN age BETWEEN 20 AND 30 THEN 'middle' ELSE 'old' END AS age_group FROM students ORDER BY age_group;
這個語句會按照學(xué)生的年齡分為young、middle、old三個年齡段,然后按照這個年齡段對學(xué)生進行排序。
八、SQL查詢結(jié)果拼接為字符串
1、使用GROUP_CONCAT函數(shù)將多行結(jié)果拼接成一個字符串:
SELECT GROUP_CONCAT(name SEPARATOR ', ') as student_names FROM students;
這個語句會將所有學(xué)生的姓名拼接成一個字符串,使用逗號作為間隔符。
2、使用COALESCE函數(shù)將多個字段值拼接成一個字符串:
SELECT COALESCE(first_name, '') || ' ' || COALESCE(last_name, '') as full_name FROM person;
這個語句會將每個人的姓、名信息拼接成一個完整的名字。
九、SQL查詢結(jié)果拼接多列
1、使用CONCAT函數(shù)將多個字段值拼接成一列結(jié)果:
SELECT CONCAT(first_name, ' ', last_name) as full_name FROM person;
這個語句會將每個人的姓、名信息拼接成一列完整的名字結(jié)果。
2、使用GROUP_CONCAT和CONCAT函數(shù)將多列結(jié)果拼接成一行結(jié)果:
SELECT GROUP_CONCAT( CONCAT(first_name, ' ', last_name) SEPARATOR ', ' ) as student_names FROM students;
這個語句會將所有學(xué)生的姓名拼接成一行結(jié)果,使用逗號作為間隔符。
十、SQL查詢結(jié)果拼接漢字
1、使用CONCAT函數(shù)將漢字字段值拼接成一個字符串:
SELECT CONCAT(last_name, first_name) as full_name FROM person_chinese;
這個語句會將每個人的姓、名信息拼接成一個完整的名字。
2、使用GROUP_CONCAT函數(shù)將多行漢字結(jié)果拼接成一行:
SELECT GROUP_CONCAT(name SEPARATOR ',') as student_names FROM students_chinese;
這個語句會將所有學(xué)生的姓名拼接成一行,使用中文頓號作為間隔符。