SQL中如何在拼接的两姓名列之间添加空格?
解决SQL拼接姓名无空格的问题
执行以下SQL查询时,通过CONCAT函数拼接actor表的first_name和last_name列,得到的姓名结果没有空格(例如PenelopeGuiness),需要调整为带空格的格式(例如Penelope Guiness)。
原查询代码:
SELECT CONCAT(a.first_name, a.last_name), f.title, f.description, f.length FROM actor a JOIN film_actor fa ON a.actor_id = fa.actor_id JOIN film f ON f.film_id = fa.film_id
解决方案
方法1:修改CONCAT函数添加空格
直接在CONCAT的参数列表中插入空格字符串' ',将姓和名分隔开:
SELECT CONCAT(a.first_name, ' ', a.last_name), f.title, f.description, f.length FROM actor a JOIN film_actor fa ON a.actor_id = fa.actor_id JOIN film f ON f.film_id = fa.film_id
方法2:使用CONCAT_WS函数(推荐)
如果你的数据库支持CONCAT_WS(比如MySQL、PostgreSQL等),可以用这个更简洁的函数。CONCAT_WS意为"Concatenate With Separator",第一个参数指定分隔符,后续参数是要拼接的字段:
SELECT CONCAT_WS(' ', a.first_name, a.last_name), f.title, f.description, f.length FROM actor a JOIN film_actor fa ON a.actor_id = fa.actor_id JOIN film f ON f.film_id = fa.film_id
这个函数的优势在于,当其中某个字段为NULL时,会自动跳过该字段而不会导致整个拼接结果为NULL,实用性更强。
内容的提问来源于stack exchange,提问作者m.aljundi
相关产品推荐
相关产品推荐

