T-SQL——将字符串转换为多列
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——将字符串转换为多列的更多相关文章
- sql 将字符串转换为表
我们常常碰到需要将用户输入之字符串依特定的分隔符转换为表的一个栏位,下面是我写的一个sql函数.如能灵活运用则用途广泛. -- ==================================== ...
- Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中
Sql Server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件 ,,) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql ...
- mysql里面如何用sql语句让字符串转换为数字
sql语句将字符串转换为数字默认去掉单引号中的空格,遇到空格作为字符串截止, SELECT '123 and 1=1' +0 结果为123 MySQL里面如何用sql语句让字符串的‘123’转换为数字 ...
- 关于jqGrig如何写自定义格式化函数将JSON数据的字符串转换为表格各个列的值
首先介绍一下jqGrid是一个jQuery的一个表格框架,现在有一个需求就是将数据库表的数据拿出来显示出来,分别有id,name,details三个字段,其中难点就是details字段,它的数据是这样 ...
- SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)
在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名) 例如:select convert(int,'3')2. cast(字段名 as i ...
- 将某个日期字符串转换为java.sql.Date的类型
import java.text.ParseException; import java.text.SimpleDateFormat; public class date { /** * @param ...
- sql server将字符串转换为 uniqueidentifier 时失败
sql server查询中出现 将字符串转换为 uniqueidentifier 时失败异常 原因为id设置为uniqueidentifier 字段,在where查询时需要做转换cast(id as ...
- mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现
转自:http://www.maomao365.com/?p=10739 摘要: 下文讲述在sqlserver 对逗号分隔的字符串转换为数据表的另类方法实现,如下所示: 实验环境:sql server ...
- SQL中字符串截取、连接、替换等函数的用法
一.SQL中SUBSTRING函数的用法1.功能:返回字符.二进制.文本或图像表达式的一部分2.语法:SUBSTRING ( expression, start, length )3.QL 中的 su ...
- sql sever 字符串函数
SQL Server之字符串函数 以下所有例子均Studnet表为例: 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student ...
随机推荐
- Android Studio 卡在download fastutil下载慢
需要替换国内镜像,现在阿里云地址已经更新了.需要使用新的地址.可以参考 https://developer.aliyun.com/mvn/guide 以下是更改buil.gradle文件的代码 // ...
- 关于python实现与体重秤蓝牙ble通信研究(Linux)
前言 前几天买一个带蓝牙的体重秤,功能就是可以通过手机app连接,然后每一次称重都会记录下来,然后进行一些计算(体脂等),但是我不想用手机来操作,我习惯用电脑,就想写一个软件来与体重秤通信,记录我的每 ...
- Apache Dubbo 多语言体系再添新员:首个 Rust 语言版本正式发布
Dubbo Rust 定位为 Dubbo 多语言体系的重要实现,提供高性能.易用.可扩展的 RPC 框架,同时通过接入 Dubbo Mesh 体系提供丰富的服务治理能力.本文主要为大家介绍 Dubbo ...
- 【Java SE进阶】Day03 数据结构、List、Set、Collections
一.数据结构 1.红黑树 根黑子黑红子黑 接近平衡树(左右孩子数量相同),查询叶子快慢次数不超过2倍 二.List 1.概述 元素有序 线性存储 带有索引 可以重复 2.常用方法 增:add(I,E) ...
- 详解 Redis 中 big keys 发现和解决
在使用 Redis 时,可能会出现请求响应慢.网络卡顿.数据丢失的情况.排查问题的时候,发现是 big keys 的问题. 什么是 big keys 在 Redis 中,一个字符串类型最大可以达到 5 ...
- 5V升压12.6V芯片电路图,三节锂电池充电
三节3.7V的锂电池串联,11.1V和最大12.6V锂电池充电电路的解决方案.在应用中,一般使用低压5V,如USB口直接输入的给三串锂电池充电,还有是15V或者18V,20V输入降压给锂电池充电的两种 ...
- SQL一文入门助记
什么是SQL SQL(Structured Query Language)是用于操作数据库的语言.一个博客有许多网站,一个游戏要储存许多游戏的账号密码,这些都离不开数据库操作. 关系型数据库与NoSQ ...
- 【ubuntu】解决无法打开终端:gnome-terminal找不到路径问题
因为之前安装pyton的时候把电脑本身的python路径给改了,所以出现了这样的问题:图形化启动系统自带终端时,报错找不到gnome-terminal的路径 后来找到解决方法: 先桌面右键-终端(E) ...
- MySQL存储 pymysql模块
目录 pymysql模块 基本使用 cursor=pymysql.cursors.DictCursor 获取数据 fetchall 移动光标 scroll 增删改二次确认 commit autocom ...
- 网络工具netstat与ss
建议使用ss命令,2001年的时候netstat 1.42版本之后就没更新了,之后取代的工具是ss.netstat命令在很多场景下比较慢.ss可以显示跟netstat类似的信息,但是速度却比netst ...