SQL Server中Substring_Index函数的替代实现方案咨询
替代SUBSTRING_INDEX实现字符串拆分的方案(Azure Data Studio适用)
1. 新增存储拆分结果的列
这部分语句可直接沿用(注意部分SQL引擎无需重复写ADD):
ALTER TABLE Table_Name ADD BU VARCHAR(255), Site_Name VARCHAR(255);
2. 使用CHARINDEX+SUBSTRING实现拆分更新
Azure Data Studio常用的SQL引擎(如SQL Server)不支持SUBSTRING_INDEX,可通过CHARINDEX定位分隔符位置,结合SUBSTRING完成截取,同时处理无分隔符的边界情况:
UPDATE your_table_name SET -- 获取第一个“-”之前的内容,若无分隔符则保留原内容 BU = CASE WHEN CHARINDEX('-', Level_code) > 0 THEN SUBSTRING(Level_code, 1, CHARINDEX('-', Level_code) - 1) ELSE Level_code END, -- 获取第一个“-”之后的内容,若无分隔符则设为空(可按需改为保留原内容) Site_Name = CASE WHEN CHARINDEX('-', Level_code) > 0 THEN SUBSTRING(Level_code, CHARINDEX('-', Level_code) + 1, LEN(Level_code)) ELSE '' END;
核心函数说明
CHARINDEX('-', Level_code):返回“-”在字符串中首次出现的位置,无分隔符时返回0SUBSTRING(字符串, 起始位置, 长度):从指定起始位置截取字符串,长度参数超出剩余字符数时自动截取到末尾CASE语句:避免无分隔符时出现无效截取报错,适配业务场景调整默认值
内容的提问来源于stack exchange,提问作者higgins
相关产品推荐
相关产品推荐

