筛选框截取不同位数的字段?

筛选一个字段 其中这个字段有可能是:1.当为5位数字时,截取前三位 2.当为4位数字时:截取前两位3.当第一位为中文后面为数字时,截取前三位 4.当为两位数字时,就要这两位

FineReport mmc0112 发布于 2022-12-4 09:57
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
LoverLv4见习互助
发布于2022-12-4 10:06

/* 1.当为5位数字时,截取前三位 

2.当为4位数字时:截取前两位

3.当第一位为中文后面为数字时,截取前三位 

4.当为两位数字时,就要这两位*/

其实这个没有闭环,如果五位以上的数字怎么办,四位数字加字符怎么处理...

以下是SQL处理方法,使用正则表达式加case when 

drop table if exists temp_20221202;

create table temp_20221202

(char_name varchar(30));

insert into temp_20221202

(char_name) values ('西1208');

insert into temp_20221202

(char_name) values ('1802');

insert into temp_20221202

(char_name) values ('23');

insert into temp_20221202

(char_name) values ('12345');

insert into temp_20221202

(char_name) values ('12345b');

select char_name

,case when (char_name REGEXP '[^0-9.]')=0  then -- 纯数字

case when length(char_name)='5' then substr(char_name,1,3)  -- 五位数字

when length(char_name)='4' then substr(char_name,1,2)  -- 四位数字

when length(char_name)='2' then char_name end   -- 二位数字

when (substr(char_name,1,1)  REGEXP "[u0391-uFFE5]")=0  -- 首字母中文

and (substr(char_name,2)  REGEXP '[^0-9.]')=0  then-- 且第二位开始纯数字 

substr(char_name,1,3)   

end

 from temp_20221202

image.png

  • 2关注人数
  • 277浏览人数
  • 最后回答于:2022-12-4 10:06
    请选择关闭问题的原因
    确定 取消
    返回顶部