sql,字符串中取数字
比如‘宁155ML21’,表中一个字段都是此类型的,我想取L后面也就是字母后面的数字,中间的ML不一定,有可能是其他的大写字母。用sql查出表中的这个字段字母后面数字的最...
比如‘宁155ML21’,表中一个字段都是此类型的,我想取L后面也就是字母后面的数字,
中间的ML不一定,有可能是其他的大写字母。
用sql查出表中的这个字段字母后面数字的最大值。
在线等
gyingz 我要的是sql不是问题总结呀!
atdeep 我看不懂你的函数。
我只要sql语句……
高手再来试一下吧,我还没找到正确答案啊……
sorry ,linkzq,我用的是oracle9i,and,realsex,我做的不是车牌号生成算法。
所以,两位的我试过了,都不对。 展开
中间的ML不一定,有可能是其他的大写字母。
用sql查出表中的这个字段字母后面数字的最大值。
在线等
gyingz 我要的是sql不是问题总结呀!
atdeep 我看不懂你的函数。
我只要sql语句……
高手再来试一下吧,我还没找到正确答案啊……
sorry ,linkzq,我用的是oracle9i,and,realsex,我做的不是车牌号生成算法。
所以,两位的我试过了,都不对。 展开
8个回答
展开全部
1、创建测试表,
create table test_str(id int, v_str varchar2(20));
2、插入测试数据
insert into test_str values(1,'abc123');
insert into test_str values(2,'ef414219sd');
insert into test_str values(3,'123');
insert into test_str values(4,'dddfg');
commit;
3、查询表中全量数据,select t.* from test_str t;
4、编写语句,取字符串中的数字;
select t.*, regexp_replace(v_str,'\D','') v_str2 from test_str t;
TableDI
2024-07-18 广告
2024-07-18 广告
当我们谈到Python与Excel的拆分时,通常指的是使用Python的库来读取Excel文件中的数据,然后根据某种逻辑(如按行、按列、按特定值等)将数据拆分成多个部分或输出到新的Excel文件中。上海悉息信息科技有限公司在处理这类任务时,...
点击进入详情页
本回答由TableDI提供
展开全部
select
substring(所查询字符串,patindex('%[^0-9][0-9]%',所查询字符串)+1,patindex('%[0-9][^0-9]%',所查询字符串)-patindex('%[^0-9][0-9]%',所查询字符串))这个只能查询第一次在字符串出现的数字串,希望可帮到你你
substring(所查询字符串,patindex('%[^0-9][0-9]%',所查询字符串)+1,patindex('%[0-9][^0-9]%',所查询字符串)-patindex('%[^0-9][0-9]%',所查询字符串))这个只能查询第一次在字符串出现的数字串,希望可帮到你你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你使用的是Oracle 10g (或以上版本)的数据库,则可以使用使用如下语句,比如表名为 test ,其中你关注的那个列名为 cc1 ,则语句如下:
select max(to_number(nvl(regexp_substr(cc1,'[0-9]*$'),0))) from test;
select max(to_number(nvl(regexp_substr(cc1,'[0-9]*$'),0))) from test;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这应该是车牌号自动生成的算法吧?
车牌号的前几位是固定的,不会变,总长度一般也不变
在这情况下,可以这样写,得到最大号码
SELECT MAX(RIGHT(Field,2)) AS Expr1
FROM [Table]
GROUP BY LEFT(Field, 6)
如果需要再补上前面的部分,生成完整的号码,如下:
SELECT LEFT(Field, 6)
+ REPLICATE('0', 2 - LEN(MAX(RIGHT(Field, 2))))
+ MAX(RIGHT(Field,2)) AS Expr1
FROM [Table]
GROUP BY LEFT(Field, 6)
已经做了补“0”处理
车牌号的前几位是固定的,不会变,总长度一般也不变
在这情况下,可以这样写,得到最大号码
SELECT MAX(RIGHT(Field,2)) AS Expr1
FROM [Table]
GROUP BY LEFT(Field, 6)
如果需要再补上前面的部分,生成完整的号码,如下:
SELECT LEFT(Field, 6)
+ REPLICATE('0', 2 - LEN(MAX(RIGHT(Field, 2))))
+ MAX(RIGHT(Field,2)) AS Expr1
FROM [Table]
GROUP BY LEFT(Field, 6)
已经做了补“0”处理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你如果能确定字母后面的数字长度或者数字前面的长度那就好办了
1.确定数字的长度(例如长度为2)
substr('宁155ML21',length('宁155ML21')-1,2)
其中的2为截取的长度
2.确定前面字母的长度
substr('宁155ML21',7)
如果上面两种都不能确定,我再想想
看看我说的第二种方法,如果能确定数字前面字母的长度,就用
select substr('宁155ML21',7) from table
1.确定数字的长度(例如长度为2)
substr('宁155ML21',length('宁155ML21')-1,2)
其中的2为截取的长度
2.确定前面字母的长度
substr('宁155ML21',7)
如果上面两种都不能确定,我再想想
看看我说的第二种方法,如果能确定数字前面字母的长度,就用
select substr('宁155ML21',7) from table
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询