sql - 如何从sql中的逗号分隔字符串中删除_符号后的值?
问题描述
如何在 _ 登录 sql 后删除值。
以下是样本数据:1_1,2_2,3_3,4_40
Sql 代码
Declare @var1 nvarchar(max)
Set @var1 ='1_1,2_2,3_3,4_40'
Select @var1
所需输出:1,2,3,4
解决方案
假设您使用的是完全支持的 SQL Server 版本,您可以使用拆分字符串,STRING_SPLIT
然后删除尾随字符:LEFT
CHARINDEX
DECLARE @var1 nvarchar(MAX);
SET @var1 = N'1_1,2_2,3_3,4_40';
SELECT LEFT(SS.[value], CHARINDEX('_', SS.[value]) - 1)
FROM STRING_SPLIT(@var1,',') SS;
如果下划线可能不在字符串中,您可以使用NULLIF
andLEN
来避免错误:
DECLARE @var1 nvarchar(MAX);
SET @var1 = N'1_1,2_2,3_3,4_40,5';
SELECT LEFT(SS.[value], ISNULL(NULLIF(CHARINDEX('_', SS.[value]),0) - 1,LEN([value])))
FROM STRING_SPLIT(@var1,',') SS;
如果您使用的不是完全受支持的 SQL Server 版本,则需要使用 UDF(例如DelimitedSplit8k_LEAD
)、XML 拆分器或创建 CLR 函数。
推荐阅读
- php - 如果其中一个查询有错误,请不要运行任何查询。我怎么做?
- c++ - 我们如何使用 OpenCv 和 Xcode 打开网络摄像头?
- c# - 如何根据条件更改列表视图中的图像
- aws-lambda - 部署 API 网关
- java - Scala.jdk.CollectionConverter
- node.js - 如何根据 URL 动态更改 EJS 上的类
- python - 如何使用具有不同值的相同键修复字典错误
- laravel-6 - 找不到异常 FatalThrowableError 类 'app\models\category'
- ios - 我需要为这个while循环提供一个异步函数吗?
- ruby-on-rails - 尝试执行rails命令时与spring相关的错误