sql-server - 传递给 LEFT 或 SUBSTRING 函数 SQL Server 的长度参数无效
问题描述
我有一张返回的桌子
SELECT *
FROM #tt
这将返回如下输出:
我想做的是这个
SELECT
item, LEN(item), LEFT(item, CHARINDEX(' =', item) - 1) AS v_col,
item, LEN(item), SUBSTRING(item, CHARINDEX('=', item) + 1, LEN(item)) AS v_val
--,v_val=SUBSTRING(item,CHARINDEX('=',item)+1,LEN(item))
FROM
#tt
CROSS APPLY
dbo.SplitStrings(value)
但我得到这个错误:
传递给 LEFT 或 SUBSTRING 函数 Sql Server 的长度参数无效
解决方案
在您第一次打电话给CHARINDEX
您时,您正在搜索空格,然后是=
,这似乎没有出现在您的实际数据中。我的猜测是,您会看到此错误,或者是因为某些列值根本没有=
。您可以通过使用CASE
表达式来解决:
SELECT
item,
CASE WHEN item LIKE '%=%'
THEN LEFT(item, CHARINDEX('=', item) - 1) END AS v_col,
CASE WHEN item LIKE '%=%'
THEN SUBSTRING(item, CHARINDEX('=', item) + 1, LEN(item)) END AS v_val
FROM #tt
CROSS APPLY dbo.SplitStrings(value)
推荐阅读
- python - 如何使用熊猫获取csv文件中列中第一个重复值的列表
- python - 尽管仅使用美国数据和形状文件,但 Geopandas 默认为世界地图
- javascript - 从字符串中提取某些子字符串
- c# - 写入时跳过 Excel 电子表格的前两行
- linux - Kubernetes:是否可以将主机的整个根文件系统挂载到容器中并执行其命令?
- r - 在 https 模式下运行 shinyapp
- xml - 删除标题标签,包括信封、正文等
- r - 在数据框中搜索“NA”条目
- python - TensorFlow 未使用所有系统内存
- windows - 如何控制 Windows 10 UWP App 的子窗口大小+位置