sql - 使用 SQL 通过分隔符拆分字符串
问题描述
我在 DB 中的表有一列以以下格式存储值。
1234#2345#6780
使用分隔符“#”存储四位数字。由于数据损坏,有些记录带有五位数字。在给定的行中可能有一个或多个五位数字。
1234#12345#67895
我正在尝试编写一个脚本来仅获取那些损坏的记录但找不到拆分和检查值的方法。
任何帮助表示赞赏。
我使用的是 SQL Server 12.0 版本
解决方案
您可以使用此函数来拆分值:
CREATE FUNCTION [dbo].[fnSplit]
(@sInputList VARCHAR(8000) -- List of delimited items
, @sDelimiter VARCHAR(8000) = '#' -- delimiter that separates items
)
RETURNS @List TABLE (item VARCHAR(8000))
BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
BEGIN
SELECT
@sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
@sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))
IF LEN(@sItem) > 0
INSERT INTO @List SELECT @sItem as item
END
IF LEN(@sInputList) > 0
INSERT INTO @List SELECT @sInputList as item -- Put the last item in
RETURN
END
然后询问结果
推荐阅读
- docker - 当我在 Ubuntu 16.04 上下载大文件 (40GB) 时,Docker 构建崩溃
- facebook-graph-api - 通过 API 按名称搜索 Instagram 用户
- reactjs - 来自 React Material-UI 怪异 API 的排版组件
- jquery - ParamQuery 获取父行
- acumatica - 如何在通用查询中将日期时间参数转换为 UTC
- python - Python:在线程之间共享连续数据
- sql - Oracle-00904 异常:标识符无效
- apache-camel - 带有 Spring FileStateRepository 的 Camel kafka
- c# - 在非异步方法中返回异步任务的正确方法
- python - 使用 python 后端制作多人回合制在线游戏的最佳方法