文本字段内容如下,请问如何通过语句或函数提取[]中的字符?谢谢大家!原字段内容                             想得到的内容
C-马鞍山-市区-导航处[9]                         9
B-马鞍山-市区-网络大学[87]                         87
C-马鞍山-当涂县-新桥宁西[335]                335

解决方案 »

  1.   

    select substring(原字段内容,charindex('[',字段),charindex(']',字段)-charindex('[',字段)-1)
    from tb
      

  2.   


    ---------------------------------
    --  Author: htl258(Tony)
    --  Date  : 2009-08-12 14:05:54
    ---------------------------------
    --> 生成测试数据表:tbIf not object_id('[tb]') is null
    Drop table [tb]
    Go
    Create table [tb]([原字段内容] nvarchar(19))
    Insert tb
    Select 'C-马鞍山-市区-导航处[9]' union all
    Select 'B-马鞍山-市区-网络大学[87]' union all
    Select 'C-马鞍山-当涂县-新桥宁西[335]'
    Go
    --Select * from tb-->SQL查询如下:
    select *,想得到的内容=replace(stuff([原字段内容],1,charindex('[',[原字段内容]),''),']','') from tb
    /*
    原字段内容               想得到的内容
    ------------------- ---------------------------------------
    C-马鞍山-市区-导航处[9]     9
    B-马鞍山-市区-网络大学[87]   87
    C-马鞍山-当涂县-新桥宁西[335] 335(3 行受影响)
    */
      

  3.   

    select substring(原字段内容,charindex('[',字段)+1,charindex(']',字段)-charindex('[',字段)-1)
    from tb
      

  4.   

    ----------------------------------------------------------------
    -- Author :fredrickhu(小F 向高手学习)
    -- Date   :2009-08-12 14:12:54
    ----------------------------------------------------------------
    --> 测试数据:[原字段内容]
    if object_id('[原字段内容]') is not null drop table [原字段内容]
    go
    create table [原字段内容]([col1] varchar(29))
    insert [原字段内容]
    select 'C-马鞍山-市区-导航处[9]' union all
    select 'B-马鞍山-市区-网络大学[87]' union all
    select 'C-马鞍山-当涂县-新桥宁西[335]'
    --------------开始查询--------------------------
    select 
      想得到的内容=substring(col1,charindex('[',col1)+1,charindex(']',col1)-charindex('[',col1)-1)
    from 
      原字段内容
    ----------------结果----------------------------
    /*想得到的内容                        
    ----------------------------- 
    9
    87
    335(所影响的行数为 3 行)*/
          
      

  5.   

    ----------------------------------------------------------------
    -- Author :fredrickhu(小F 向高手学习)
    -- Date   :2009-08-12 14:12:54
    ----------------------------------------------------------------
    --> 测试数据:[原字段内容]
    if object_id('[原字段内容]') is not null drop table [原字段内容]
    go
    create table [原字段内容]([col1] varchar(29))
    insert [原字段内容]
    select 'C-马鞍山-市区-导航处[9]' union all
    select 'B-马鞍山-市区-网络大学[87]' union all
    select 'C-马鞍山-当涂县-新桥宁西[335]'
    --------------开始查询--------------------------
    select 
      想得到的内容=substring(col1,charindex('[',col1)+1,charindex(']',col1)-charindex('[',col1)-1)
    from 
      原字段内容
    ----------------结果----------------------------
    /*想得到的内容                        
    ----------------------------- 
    9
    87
    335(所影响的行数为 3 行)*/
          
      

  6.   

    CREATE TABLE #(TEST TEXT)
    GO
    INSERT INTO # SELECT 'C-马鞍山-市区-导航处[9]'
    UNION ALL SELECT 'B-马鞍山-市区-网络大学[87]'
    UNION ALL SELECT 'C-马鞍山-当涂县-新桥宁西[335]'
     
    SELECT SUBSTRING(CAST(TEST AS VARCHAR(MAX)),CHARINDEX('[',TEST)+1,CHARINDEX(']',TEST)-CHARINDEX('[',TEST)-1) FROM #/*
    9
    87
    335
    */