志铭-2023年2月21日

0. 使用ParseName

  • 注意:ParseName最多只能拆分为四列
  • ParseName只能针对.,所以若是其他的分隔字符,需要先替换为.
WITH temp
AS (SELECT *
FROM
(
VALUES
('192.168.3.239'),
('192.168.3.232')
) AS T (IP) )
SELECT IP,
PARSENAME(IP, 1) AS IP1,
PARSENAME(IP, 2) AS IP2,
PARSENAME(IP, 3) AS IP3,
PARSENAME(IP, 4) AS IP4
FROM temp;
IP                IP1 	IP2    IP3     IP4
-------------- --- --- --- ---
192.168.3.239 239 3 168 192
192.168.3.232 232 3 168 192

1. 具体到拆分为两列

WITH temp
AS (SELECT *
FROM
(
VALUES
('1:2'),
('2:3')
) AS T (Ratio) )
SELECT Ratio,
LEFT(Ratio, CHARINDEX(':', Ratio) - 1) AS R1,
RIGHT(Ratio, (LEN(Ratio) - CHARINDEX(':', Ratio))) AS R2
FROM temp;
Ratio R1   R2
----- ---- ----
1:2 1 2
2:3 2 3

2. 具体到拆分的指定的列数

-- ======================================================
-- Author: shanzm
-- Create date: 2020年5月5日 17:01:40
-- Description: 将指定的字符串按照指定的分裂符分裂并返回指定
-- 位置的值
-- ======================================================
CREATE FUNCTION [dbo].[f_GetSplitByIndex]
(
@str VARCHAR(8000), --包含多个数据项的字符串
@index INT, --要获取的数据项的位置
@seprate VARCHAR(10) --数据分隔符
)
RETURNS VARCHAR(1000)
AS
BEGIN
IF @str IS NULL
RETURN (NULL);
DECLARE @splitlen INT;
SELECT @splitlen = LEN(@seprate + 'a') - 2;
WHILE @index > 1 AND CHARINDEX(@seprate, @str + @seprate) > 0
SELECT @index = @index - 1,
@str = STUFF(@str, 1, CHARINDEX(@seprate, @str + @seprate) + @splitlen, '');
RETURN (ISNULL(LEFT(@str, CHARINDEX(@seprate, @str + @seprate) - 1), ''));
END;
WITH temp
AS (SELECT '张三,李四,王五' AS A)
SELECT A,
dbo.f_GetSplitByIndex(A, 1, ',') AS A1,
dbo.f_GetSplitByIndex(A, 2, ',') AS A2,
dbo.f_GetSplitByIndex(A, 3, ',') AS A3
FROM temp; --结果:
A A1 A2 A3
--------------- ------ ------ ------
张三,李四,王五 张三 李四 王五

最新文章

  1. NFS Volume Provider(Part I) - 每天5分钟玩转 OpenStack(62)
  2. 通过eclipse配置Spring MVC项目
  3. ECshop中defined('IN_ECS')的实现原理
  4. C++运算符重载的规则
  5. 用 Python 测试框架简化测试
  6. Django 自定义模版标签和过滤器
  7. Java 和Oracle的数据类型
  8. spring 里面的StringUtils,先放这儿,有时间研究吧
  9. Windows Form线程同步
  10. [补档][Tyvj 1518]CPU监控
  11. 读书笔记-JavaScript面向对象编程(三)
  12. Applet学习教程(一):applet+dwr 实现
  13. 南大算法设计与分析课程OJ答案代码(3)
  14. MySql数据库连接池专题
  15. for循环将字典添加到列表中出现覆盖前面数据的问题
  16. Lua语法基础(1)---简介、基本数据类型、表达式
  17. 为Hadoop集群选择合适的硬件配置
  18. pod 的warning一定要注意消除,要不然你的pod配置有问题无法导入
  19. 10-能不能组成m
  20. debian下为apache启用rewrite模块

热门文章

  1. 关于 python 的内存机制
  2. HCIE Routing&Switching之MPLS LDP理论
  3. Day30:ArrayList详解
  4. Django框架三板斧本质-jsonResponse对象-form表单上传文件request对象方法-FBV与CBV区别
  5. 线程、GIL全局解释器锁、进程池与线程池
  6. SQLMap自带绕过脚本tamper的讲解
  7. Prometheus高可用架构介绍
  8. Go语言使用场景 | go语言与其它开源语言比较 | Go WEB框架选型
  9. IntelliJ IDEA中我最爱的10个快捷操作
  10. vue3+ts 全局事件总线mitt