sqlserver 分列

sql server 数据库中某张表(Person)的数据信息是:

Address

1 平山花园-4单元-12幢-203 2 香山花园-3单元-22幢-304

现在有需求是,将地址信息显示形式改成4列 ,即小区名,单元号,楼房号,房间号 分成4列进行显示

ID 小区名 单元号 楼房号 房间号 1 平山花园 4单元 12幢 203 2 香山花园 3单元 22幢 304

介绍两种方案:

第一种:最简单的办法就是调用sql server中自带函数PARSENAME来进行拆分,但是注意:最多只能拆分成4个字段。

针对这个例子的实现:parsename默认是根据’.’进行拆分的,所以首先要做的是将字段中的’-‘替换成’.’

PARSENAME详解:

PARSENAME ( 'object_name' , object_piece )

要检索其指定部分的对象的名称。 object_name 的数据类型为 sysname。此参数是可选的限定对象名称。如果对象名称的所有部分都是限定的,则此名称可包含四部分:服务器名称、数据库名称、所有者名称以及对象名称。

要返回的对象部分。 object_piece 的数据类型为 int 值,可以为下列值:

1 = 对象名称

2 = 架构名称

3 = 数据库名称

4 = 服务器名称

PARSENAME 函数不指示指定名称的对象是否存在。PARSENAME 仅返回指定对象名称的指定部分。

第二种方案:思路:写一个函数 根据特定的分割符号利用SUBSTRING和CHARINDEX将字段进行截取拆分,

调用规则:

PS:还有一种更加粗暴的写法 就是不用另外创建函数 直接select 的时候 就通过截取字符串,来附加新的列

例如:有一个需求是 T_Person表中有字段Birth 里面的信息在输入的时候 形式不符合规定

ID Birth 1 1900/2/12 2 1898/2/3 3 4 NULL

现在要求统一形式成:1987-05-03的形式:

执行之后的结果是:

ID Birth 1 1900-02-12 2 1898-02-03 3 4 NULL

=======================================================================================================================

Original: https://www.cnblogs.com/Songhn9/p/12622903.html
Author: 她脚踝银铃响了
Title: sqlserver 分列

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599335/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球