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/
转载文章受原作者版权保护。转载请注明原作者出处!