SQL里字段截取指定内容如何实现

SQLServer中省份字段格式如下:

~`~`7 河北`~`8 Hebei`~`9 河北`~`~

~`~`7 江苏`~`8 Jiangsu`~`9 江蘇`~`~

~`~`7 黑龙江`~`8 Heilongjiang`~`9 黑龍江`~`~

我想从中提取7后面的省份名称(如河北、江苏、黑龙江....),SQL语句要如何写呢

SQL chyou 发布于 2024-3-25 11:20
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
2
用户k6280494Lv6资深互助
发布于2024-3-25 11:21

sql复制代码

SELECT  
SUBSTRING(province_field,
CHARINDEX('7 ', province_field) + 2,
CHARINDEX('`~`', province_field, CHARINDEX('7 ', province_field) + 2) - CHARINDEX('7 ', province_field) - 2) AS province_name
FROM  
your_table_name;

在这个SQL语句中:

  • province_field 是假设的字段名,你需要将其替换为你实际使用的字段名。

  • your_table_name 是假设的表名,你需要将其替换为你实际使用的表名。

CHARINDEX('7 ', province_field) 函数查找7后面跟着空格的位置。

CHARINDEX('~', province_field, CHARINDEX('7 ', province_field) + 2) 函数从7后面开始查找~符号的位置。

SUBSTRING 函数使用这两个CHARINDEX函数的结果来确定要提取的子字符串的开始和长度。

+ 2 是因为我们要跳过7和空格。

- CHARINDEX('7 ', province_field) - 2 是为了计算子字符串的长度。

请注意,这个SQL语句假设每个province_field字段的格式都是一致的,并且7后面紧跟的省份名称之前只有一个空格,并且在省份名称之后紧接着是~符号。如果格式有所变化,你可能需要调整CHARINDEX和SUBSTRING函数的使用来适应不同的格式。

另外,如果你的字段中包含全角空格或不可见字符,可能会影响CHARINDEX函数的正确工作。确保你的字段数据是干净的,并且确实包含你期望的字符。

  • 2关注人数
  • 203浏览人数
  • 最后回答于:2024-3-25 11:21
    请选择关闭问题的原因
    确定 取消
    返回顶部