问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql如何获取字符串中的指定字符

发布网友 发布时间:2022-04-22 07:32

我来回答

4个回答

热心网友 时间:2022-04-08 11:03

1、创建测试表,

create table test_int(value varchar2(50));

2、插入测试数据

insert into test_int values('asdfdsf?d=123&ewv');

insert into test_int values('qwer?d=234');

insert into test_int values('asfdwe?d=234&dhewu');

insert into test_int values('adfasf?d=25&reuw');

insert into test_int values('afhkashf');

commit;

3、查询表中全量数据,select t.*, rowid from test_int t;

4、编写sql,获取字符串中的指定字符; 

select t.*,

       case

         when instr(value, 'd=') = 0 then

          null

         else

          substr(value,

                 instr(value, 'd='),

                 case

                   when instr(value, '&') = 0 then

                    10

                   else

                    instr(value, '&') - instr(value, 'd=')

                 end)

       end a

  from test_int t;

热心网友 时间:2022-04-08 12:21

用函数实现会比较方便,如果是SQL Server的话,可以创建如下函数:

create function dbo.get01 (@s nvarchar(1000))
returns nvarchar(1000)
as
begin
 declare @idx int, @t nvarchar(1000)
 set @idx = charindex('?d=', @s)
 if @idx < 1
 begin
  set @idx = charindex('&d=', @s)
 end
 if @idx > 0
 begin
  set @t = right(@s, len(@s) - @idx)
  set @idx = charindex('&', @t)
  if @idx > 0
  begin
   set @t = left(@t, @idx - 1)
  end
 end
 return @t
end
go

调用示例:

select s.txt, dbo.get01(s.txt) as val
from (
 select 'adfasf?d=25&reuw' as txt
 union
 select 'sparetest?d=123&ewv'
 union
 select 'afhkashf'
 union
 select 'afdafda?b=c029&d=456'
) s

结果:

热心网友 时间:2022-04-08 13:56

select substring(字段,0,charindex('.',字段,0)+3) FROM 表 测试过的~追问这个根本就不能用

热心网友 时间:2022-04-08 15:47

SQL> insert into ckt1 values('asfdwe?d=234&dhewu');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from ckt1;

STR
--------------------------------------------------------------------------------
asfdwe?d=234&dhewu

SQL> select instr(str,'d=') loc from ckt1;

LOC
----------
8

SQL> select instr(str,'d=') starloc,instr(str,'&') endloc from ckt1;

STARLOC ENDLOC
---------- ----------
8 13

SQL> select substr(str,instr(str,'d='),instr(str,'&')) newstr from ckt1;

NEWSTR
--------------------------------------------------------------------------------
d=234&dhewu

SQL> select substr(str,instr(str,'d='),instr(str,'&')-instr(str,'d=')) newstr from ckt1;

NEWSTR
--------------------------------------------------------------------------------
d=234

这样应该可以
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
急求高人解答 ···管理类的问题 ···!!!急急急···我会在线等... ...如果基层管理幅度为8,高层管理人员管理幅度为3,则该公司中层管理人员... ...发生化学变化的实质是( )A.分子间隔发生变化B.物质状态发生改变C... 下列变化不能说明发生了化学变化的是( )A.变化时有电子的得失或共用电... 下列描述正确的是( )A.固态物质的分子间无间隔B.液态物质的分子不断运动... 原来微信打开这个功能,能够看到马路上的街景,涨知识了! ...百度帐号被人在异地登录了,问题是没有任何人知道我的密码啊?而且也... 医疗事故纠纷和医疗损害纠纷的区别是什么 医疗纠纷与医疗事故的定义是什么? 医疗事故纠纷是指什么的 如何获得一个字符串中指定位置的字符 如何快速的获取字符串中的某个字符 如何获取一个字符串在某个字符串的位置 如何有效防止自己的银行卡被盗刷? 如何防止带还软件盗刷你的信用卡 如何防范信用卡诈骗? 信用卡怎样防盗刷? 为了避免信用卡盗刷,一般需要注意什么? 怎样防止信用卡被盗 周公解梦青橙 国内有哪些色谱生产厂家? 婺城区长山乡安脚村开发什么项目 总熬夜黑眼圈怎样才能淡化 科创论坛的科创网络俱乐部 如何才能祛除熬夜所导致的黑眼圈呢? 中仪科创(北京)自动化仪表有限公司怎么样? 北京华大科创仪表设备有限公司卖的E+H超声波液位计... 杭州富阳科创仪表有现公司的耐震压力表多少元 北京科创创新仪器仪表有限公司怎么样? 经常熬夜, 有什么有效快速的办法淡化黑眼圈? 如何获取某个字符在字符串中的位置 格力空调柜机王者之尊怎么拆除清洗过滤网,两侧圆... C语言中怎样获得字符串中的单个字符 java 怎么获得字符串中某一字符的位置 (java)如何获取字符串的字节数! java如何获取字符位置? js中获取字符串的某一位的方法叫什么 javascript中如何获取字符串中的某些字符串 java中怎么获取一个字符串的长度 java怎么获取字符串中第i个字符 javascript中如何取字符串的第一个字符 js怎样获取字符ASCII码? java中如何获得字符串中的某个字符 截取字符串 sql如何截取字符 怎么把微信恢复成原来 华为手机怎么关闭订阅 怎样将删除的微信恢复 京东金条有额度但是借款时提示暂时无法提供金条服... 激活金条时显示暂时无法提供借款服务