如果只是固定取"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')
SUBSTRING
返回字符、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
如果/能够保证在字段中唯一出现的话可以:
SubString('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg',
CharIndex('/',mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg)-2,5)
可以查查
CharIndex
patindex
的使用
select substring('mgdf13hj44jjjgasetrxzc20/30nj5weyu45f5645gjhkdfjkg',23,5)