sql sever字符串的截取

org_name长度大于等于10。截取6,8
小于10且大于5,截取2,3
select*form lose_pub_org

SELECT 
    CASE
        WHEN LEN(org_name) >= 10 THEN SUBSTRING(org_name, 2, 3)
        WHEN LEN(org_name) > 5 AND LEN(org_name) < 10 THEN SUBSTRING(org_name, 2, 2)
    END AS ORGNM
FROM 你的表名

【以下回答由 GPT 生成】

下面是我提供的SQL代码,用于实现上述需求:

-- 当org_name的长度大于等于10时,截取该字符串的第6到第8个字符
SELECT 
  CASE 
    WHEN LEN(org_name) >= 10 THEN SUBSTRING(org_name, 6, 3)
    ELSE org_name
  END AS org_name_trimmed
FROM lose_pub_org

-- 当org_name的长度小于10且大于5时,截取该字符串的第2到第3个字符
SELECT 
  CASE 
    WHEN LEN(org_name) > 5 AND LEN(org_name) < 10 THEN SUBSTRING(org_name, 2, 2)
    ELSE org_name
  END AS org_name_trimmed
FROM lose_pub_org

上述代码使用了SQL Server内置的函数LEN来获取字符串的长度,并使用SUBSTRING函数来截取字符串的指定部分。默认情况下,SUBSTRING函数的第一个参数是要截取的字符串,第二个参数是要截取的起始位置,第三个参数是要截取的长度。根据需求,我使用了CASE语句来根据字符串长度的不同进行不同的截取操作。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^