SQL如何将一个列中值内的逗号分割成另一列

简介: 本文介绍了在 SQL Server 中如何将一个列中的逗号分隔值拆分成多列。通过使用 `REVERSE` 和 `PARSENAME` 函数组合,实现对地址字符串的拆分,分别提取出街道、城市和州信息。适用于处理类似结构化文本数据的场景,提升数据查询与分析效率。

有时候,我们会想将一个列中的值分成多列。

示例

例如某个列是这样的:
7890 – 20th Ave E Apt 2A, Seattle, VA
9012 W Capital Way, Tacoma, CA
5678 Old Redmond Rd, Fletcher, OK
3456 Coventry House Miner Rd, Richmond, TX

代码

1. MS SQL Tips

SELECT 
     REVERSE(PARSENAME(REPLACE(REVERSE(myAddress), ',', '.'), 1)) AS [Street]
   , REVERSE(PARSENAME(REPLACE(REVERSE(myAddress), ',', '.'), 2)) AS [City]
   , REVERSE(PARSENAME(REPLACE(REVERSE(myAddress), ',', '.'), 3)) AS [State]
FROM dbo.custAddress

结果:

Street City State
7890 – 20th Ave E Apt 2A Seattle VA
9012 W Capital Way Tacoma CA
相关文章
|
SQL Go 索引
SQL Server 自定义字符串分割函数
原文:SQL Server 自定义字符串分割函数 一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果(标量值函数)   1 create function Func_StrArrayLength 2 ( ...
1217 0
|
SQL 数据库
SQL如何实现Excel的分列功能(按指定符号进行分割)?
我们在处理SQL里的数据时候,时不时会遇到对字符串进行分割的情况。类似Excel中按指定字符进行分列,今天给大家介绍两种处理方法。
SQL如何实现Excel的分列功能(按指定符号进行分割)?
|
SQL 数据库 Go
SQL Server 游标运用:鼠标轨迹字符串分割
原文:SQL Server 游标运用:鼠标轨迹字符串分割 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Codes) 补充说明(Addon) 二.背景(Contexts)   我们的系统中记录了用户的鼠标行为轨迹字符串,这些字符串的格式是:PosSet:[573,1103,2010-09-03 22:32:35],[864,110,2010-09-03 22:32:57],这个字段表示用户点击页面的X坐标,Y坐标,时间。
1295 0
|
SQL 存储 Go
SQL 把表中字段存储的逗号隔开内容转换成列表形式
原文:[原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式   我们日常开发中,不管是表设计问题抑或是其他什么原因,或多或少都会遇到一张表中有一个字段存储的内容是用逗号隔开的列表。   具体效果如下图:   ------》      从左边图转换成右边图,像这种需求,我们难免会遇到。
1551 0
|
SQL
SQL点滴3—一个简单的字符串分割函数
原文:SQL点滴3—一个简单的字符串分割函数 偶然在电脑里看到以前保存的这个函数,是将一个单独字符串切分成一组字符串,这里分隔符是英文逗号“,”  遇到其他情况只要稍加修改就好了 CREATE FUNCTION dbo.
992 0
|
SQL 数据格式 XML
|
SQL Go
[SQL]实现按照指定分割分分割字符串
SET QUOTED_IDENTIFIER ONSET ANSI_NULLS ONGOCREATE  function [dbo].[fun_split](@SourceSql varchar(max),@StrSeprate varchar(10))  returns @temp ta...
799 0
|
SQL 数据格式 XML
SQL 将一个字段内用逗号分隔的内容分成多条记录
---恢复内容开始--- 本文转http://www.mhzg.net/a/20117/2011789260293.html 由于业务需求,我们可能会把一串以分割符字符串数据放到一个字段,如我们在客户端处理拆分是很简单的,不过这样做效果不太好,怎么用SQL SERVER 2008 来解决这件事件哪?...
1916 0