BigQuery中将空格分隔三段姓名转为两段格式的技术问题
BigQuery姓名格式转换解决方法
源数据姓名格式为last first middle(仅空格分隔),要转成last, first middle格式,你之前的语句报错是因为SPLIT返回数组类型,既不能直接用CONCAT拼接,也无法用于分组操作。下面提供两种简单可行的解决方法:
方法一:正则替换一步到位
直接用REGEXP_REPLACE把第一个空格替换成,,代码如下:SELECT REGEXP_REPLACE(Teacher_Name, r'^([^ ]+) ', r'\1, ') AS Teacher_Name FROM your_table_name正则逻辑:匹配开头的连续非空格字符(即姓氏)加后续空格,将其替换为捕获到的姓氏加上
,,直接生成目标格式。方法二:拆分数组后拼接
先把姓名按空格拆分为数组,分别提取姓氏和剩余名字部分再拼接:SELECT CONCAT( SPLIT(Teacher_Name, ' ')[OFFSET(0)], ', ', ARRAY_TO_STRING(SPLIT(Teacher_Name, ' ')[OFFSET(1):], ' ') ) AS Teacher_Name FROM your_table_name逻辑说明:
SPLIT(Teacher_Name, ' ')[OFFSET(0)]取数组第一个元素(姓氏),SPLIT(Teacher_Name, ' ')[OFFSET(1):]取从第二个元素开始的所有内容(名字+中间名),用ARRAY_TO_STRING将这部分内容重新用空格连接,最后和姓氏拼接成目标格式。
内容的提问来源于stack exchange,提问作者Mahler258
相关产品推荐
相关产品推荐

