SQL中有没有类似于ACCESS中 instr函数的函数!结构?型号 
ABC-12B1.3
ABC-24B1.0
ACD-10B1ACCESS中用“val(mid(型号,InStr(型号,"-")+1,1000)) AS 数量” 就能得出 数量
12
24
10
在SQL中如何实现?

解决方案 »

  1.   

    SELECT SUBSTRING(型号,5,2) AS 数量 FROM TB???
    有规律
      

  2.   


    substring(型号,charindex('-',型号)+1,2) as 数量
      

  3.   

    SUBSTRING
    返回字符、binary、text 或 image 表达式的一部分。有关可与该函数一起使用的有效 Microsoft® SQL Server™ 数据类型的更多信息,请参见数据类型。 语法
    SUBSTRING ( expression , start , length ) 参数
    expression是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。start是一个整数,指定子串的开始位置。length是一个整数,指定子串的长度(要返回的字符数或字节数)。
      

  4.   

    STUFF
    删除指定长度的字符并在指定的起始点插入另一组字符。语法
    STUFF ( character_expression , start , length , character_expression ) 参数
    character_expression由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列。start是一个整形值,指定删除和插入的开始位置。如果 start 或 length 是负数,则返回空字符串。如果 start 比第一个 character_expression 长,则返回空字符串。length是一个整数,指定要删除的字符数。如果 length 比第一个 character_expression 长,则最多删除到最后一个 character_expression 中的最后一个字符。返回类型
    如果 character_expression 是一个支持的字符数据类型,则返回字符数据。如果 character_expression 是一个支持的 binary 数据类型,则返回二进制数据。注释
    可以嵌套字符串函数。
      

  5.   

    substring(型号,charindex('_',型号),2)
      

  6.   

    subtring或stuff配合charindex函数就可以了 
    substring(型号,charindex('_',型号),2)
      

  7.   


    create table test(型号 varchar(20))
    insert test
    select 'ABC-12B1.3' union all
    select 'ABC-24B1.0' union all
    select 'ACD-10B1' 
    goselect substring(型号,charindex('-',型号)+1,2)[数量] from test
    数量   
    ---- 
    12
    24
    10(所影响的行数为 3 行)
      

  8.   

    if object_id('tb') is not null drop table tb
     go
    create table tb(id varchar(20))
    insert tb
    select 
    'ABC-12B1.3' union all select 
    'ABC-24B1.0' union all select
    'ACD-10B1'   select substring(id,5,2) from tb
      

  9.   

    if object_id('tb') is not null drop table tb
     go
    create table tb(id varchar(20))
    insert tb
    select 
    'ABC-12B1.3' union all select 
    'ABC-24B1.0' union all select
    'ACD-10B1'   select substring(id,5,2) from tb   --从第五位开始取2位
    select left(stuff(id,1,charindex('-',id),''),2) as 结果 from tb
     --先将字符串的‘-’以前的字符删除,再从左边取二位/*
    结果
    12
    24
    10
    */
      

  10.   

    substring(型号,5,2) as 数量
      

  11.   

    型号                长度
    ABC-12B1.3        2
    ABC-24B1.0        3
    ACD-100B1         2.5
    ABCD-6B1.3        4ACCESS中用“val(mid(型号,InStr(型号,"-")+1,1000)) AS 数量” 就能得出 
    在取出数量形成的变量,能和别的变量相乘!
    数量       总长度
    12        24
    24        72
    100       250
    6         24
    在取数的过程中不只是取两位,有的时需要取到1位和3位。