weixin_43867410
华好腿
采纳率100%
2019-10-16 15:53

sql截取某字段中固定格式的部分

25

举例:取type字段里,“位置_ ”这个后面的信息,比如王府井,合生汇,银座
如果位置后面没有,和品牌信息呢
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • zy_281870667 Bug开发攻城狮 2年前
    SELECT SUBSTR(type FROM LOCATE('位置_',type)+3 FOR LOCATE(',品牌',type)-(LOCATE('位置_',type)+3) );
    

    +3 是下标+3,因为返回的是 “位置_”的下标,实际我们需要的是 前进3位 “王府井”的开始下标

    如果后面没有,和另一个字段,要怎么取呢

    SELECT SUBSTR(type FROM LOCATE('位置_',type)+3 FOR LENGTH(type) );
    

    tip :数据量大的话,这样用,会被打死哦

    点赞 评论 复制链接分享
  • weixin_42080504 have_power 2年前

    还是数据库自带函数掌握的太少了,给你普及一个函数

    SUBSTRING_INDEX(str,delim,count)
    

    详细的讲解可以自己去百度,上面介绍的也蛮详细的。

    select SUBSTRING_index(SUBSTRING_index('城市_北京.位置_王府井.品牌_JNBY','位置_',-1),'.品牌',1) union all
    select SUBSTRING_index(SUBSTRING_index('位置_王府井.品牌_ABC','位置_',-1),'.品牌',1) union all
    select SUBSTRING_index(SUBSTRING_index('城市_山东.位置_银座.品牌_BCD','位置_',-1),'.品牌',1);
    

    上面是我测试的代码。
    结果贴个图吧。
    图片说明

    点赞 1 评论 复制链接分享
  • weixin_41916310 梅花五瓣 2年前

    SELECT * FROM type WHERE cType like '%位置_%' 将需要的数据选取出来,图片说明拷贝选取出来的所有内容到.txt文件中,用制表符替换“,”和"位置_",再将替换后的内容拷贝到Excel中就可以得到需要的内容,图片说明

    全sql语句查
    查非末尾位置的
    select SUBSTRING(cType,instr(cType,'位置_') + 3, instr(cType,',品牌') - instr(cType,'位置_')+3) from type WHERE cType LIKE '%,品牌'

    查末尾位置的
    select SUBSTRING(cType,instr(cType,'位置_') + 3, CHAR_LENGTH(cType) - instr(cType,'位置_') + 3) from type WHERE cType NOT LIKE '%,品牌'

    点赞 评论 复制链接分享
  • w8998036 秦拿希 2年前

    sqlserver

    SUBSTRING(content,CHARINDEX('位置_',content)+3,CHARINDEX(',',content,CHARINDEX('位置_',content))-CHARINDEX('位置_',content)-3)
    
    点赞 评论 复制链接分享
  • wave12_mp wave12_mp 2年前

    substring(instr(type,'位置_') + 3, instr(type,'.') - (instr(type,'位置_')+3) )

    点赞 评论 复制链接分享
  • lty2017 lty2017 2年前

    选择出type字段,type.Replace("位置_”,"" )

    点赞 评论 复制链接分享

相关推荐