SQL取字段中某一部分特定数值
有一个段,"mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg"(英文字母可能是其他的数据)怎样才能单独取出“20/30...
有一个段,"mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg"(英文字母可能是其他的数据)怎样才能单独取出“20/30”这个数据?
字符串是不固定的,数值也不一定是20/30,只有“/”是固定值,怎么弄?》 展开
字符串是不固定的,数值也不一定是20/30,只有“/”是固定值,怎么弄?》 展开
5个回答
展开全部
如果只是固定取"20/30"比较容易, 只需找到"20/30"在此字符串的开始位置,再截取5个字符的长度就可以了,如:
SELECT CASE WHEN CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30') > 0 THEN SUBSTRING('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30'),5) ELSE '' END
如果不一定是20/30,而是与"/"前后关联的数字(eg: 14/20, 33/66,等...),就麻烦了,你可能需要写一个抽取字符串的函数,如: f_substr(),然后在SQL里调用:
select 用户.f_substr('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg')
SELECT CASE WHEN CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30') > 0 THEN SUBSTRING('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', CHARINDEX('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg', '20/30'),5) ELSE '' END
如果不一定是20/30,而是与"/"前后关联的数字(eg: 14/20, 33/66,等...),就麻烦了,你可能需要写一个抽取字符串的函数,如: f_substr(),然后在SQL里调用:
select 用户.f_substr('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg')
展开全部
SUBSTRING
返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。
语法
SUBSTRING ( expression , start , length )
参数
expression
是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。
start
是一个整数,指定子串的开始位置。
length
是一个整数,指定子串的长度(要返回的字符数或字节数)。
select substring('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg',23,5)
返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。
语法
SUBSTRING ( expression , start , length )
参数
expression
是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。
start
是一个整数,指定子串的开始位置。
length
是一个整数,指定子串的长度(要返回的字符数或字节数)。
select substring('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg',23,5)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一楼的是固定长度的
要是之前或之后长度都不固定,可以这样写
instr(str,'/',0,-1)找到'/'的位置
select subStr( str ,instr(str,'/',1,1)-2 ,5)
from ……
这句话是取/附近5个字符的代码!
有此数据库不支持instr可以用:
CHARINDEX
要是之前或之后长度都不固定,可以这样写
instr(str,'/',0,-1)找到'/'的位置
select subStr( str ,instr(str,'/',1,1)-2 ,5)
from ……
这句话是取/附近5个字符的代码!
有此数据库不支持instr可以用:
CHARINDEX
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果/能够保证在字段中唯一出现的话可以:
SubString('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg',
CharIndex('/',mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg)-2,5)
可以查查
CharIndex
patindex
的使用
SubString('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg',
CharIndex('/',mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg)-2,5)
可以查查
CharIndex
patindex
的使用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select substring('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg',23,5)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询