志铭-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
--------------- ------ ------ ------
张三,李四,王五 张三 李四 王五

T-SQL——将字符串转换为多列的更多相关文章

  1. sql 将字符串转换为表

    我们常常碰到需要将用户输入之字符串依特定的分隔符转换为表的一个栏位,下面是我写的一个sql函数.如能灵活运用则用途广泛. -- ==================================== ...

  2. Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中

    Sql Server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件 ,,) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql ...

  3. mysql里面如何用sql语句让字符串转换为数字

    sql语句将字符串转换为数字默认去掉单引号中的空格,遇到空格作为字符串截止, SELECT '123 and 1=1' +0 结果为123 MySQL里面如何用sql语句让字符串的‘123’转换为数字 ...

  4. 关于jqGrig如何写自定义格式化函数将JSON数据的字符串转换为表格各个列的值

    首先介绍一下jqGrid是一个jQuery的一个表格框架,现在有一个需求就是将数据库表的数据拿出来显示出来,分别有id,name,details三个字段,其中难点就是details字段,它的数据是这样 ...

  5. SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)

    在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名)   例如:select convert(int,'3')2. cast(字段名 as i ...

  6. 将某个日期字符串转换为java.sql.Date的类型

    import java.text.ParseException; import java.text.SimpleDateFormat; public class date { /** * @param ...

  7. sql server将字符串转换为 uniqueidentifier 时失败

    sql server查询中出现 将字符串转换为 uniqueidentifier 时失败异常 原因为id设置为uniqueidentifier 字段,在where查询时需要做转换cast(id as ...

  8. mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现

    转自:http://www.maomao365.com/?p=10739 摘要: 下文讲述在sqlserver 对逗号分隔的字符串转换为数据表的另类方法实现,如下所示: 实验环境:sql server ...

  9. SQL中字符串截取、连接、替换等函数的用法

    一.SQL中SUBSTRING函数的用法1.功能:返回字符.二进制.文本或图像表达式的一部分2.语法:SUBSTRING ( expression, start, length )3.QL 中的 su ...

  10. sql sever 字符串函数

    SQL Server之字符串函数   以下所有例子均Studnet表为例:  计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student ...

随机推荐

  1. ST表优化区间gcd

    ST表的使用需要所求区间答案具有可重复性(询问时需要用到两个区间重叠来覆盖询问区间) 此题要求gcd为x的区间个数 可以用ST表处理出所有区间的\(gcd\) \(O(nlogn)\) 将区间的左端点 ...

  2. SSH(四)控制层、业务层、dao层类的创建以及applicationcontext.xml和struts.xml配置

    ssh框架的运作方式就是页面请求控制层,控制层调用dao层的方法,dao层完成对数据的操作的一个过程. 现在我们初步简单编写各层的class. action控制层: ActionSupport:实现了 ...

  3. python中调用C代码

    首先我们需要明晰为什么我们需要在python中调用C语言的代码,原因不外乎有二: 其一,python不擅长"大量运算"任务,而擅长于编写简单,"IO密集型作业" ...

  4. 谈谈我的「数字文具盒」 - NextCloud

    接下来两篇主要谈论 Nextcloud 和 Obsidian,因为篇幅较长,所以单出罗列出来.本文主要介绍 Nextcloud 以及使用中的技巧和心得体会. Nextcloud Nextcloud 是 ...

  5. 【Shell案例】【wc记录单词长度、for循环和if、awk文本分析工具】7、打印字母数小于8的单词

    描述写一个 bash脚本以统计一个文本文件 nowcoder.txt中字母数小于8的单词. 示例:假设 nowcoder.txt 内容如下:how they are implemented and a ...

  6. 使用selenium爬取淘宝

    一.出现的问题 前段时间在使用selenium对淘宝进行模拟登陆的时候,输入完正好和密码,然后验证码无论如何都不能划过去.找了好久,原来是因为selenium在浏览器中运        行的时候会暴露 ...

  7. .netcore项目docker化,以及docker之间通信

    简言: 最近刚完成公司的新系统,系统使用的是微服务架构,由于领导说要将服务docker化.下面将我的研究结果分享出来,如若有错误的地方,还请各位多多指点. 目录: 什么是docker? 使用docke ...

  8. ES6——模块化

    模块化 模块化是指将一个大的程序文件,拆分成许多小的文件,然后将小文件组合起来. 一.浏览器使用ES6模块化方式一 使用script标签,将type属性设置为module,然后在script中书写代码 ...

  9. STM32用PWM波控制呼吸灯代码

    pwm.c #include "pwm.h" //TIM3-CH3 //PB0 void PWM_Config(void) { GPIO_InitTypeDef GPIO_Init ...

  10. 【架构设计】保持简单轻量设计的三个原则——DRY,KISS, YAGNI

    前言 一个软件轻量简单的软件架构是非常重要的,它可以让我们花最小的代价就能满足业务上的需求.那如何保证轻量简单呢?那今天就和大家分享下这其中的秘密,也就是3个重要的指导原则,KISS原则,YAGNI原 ...