History表中有一字段smsg,为聊天内容字段,该字段前面部分为字体风格,以‘ \’开始 ‘\C’ 结束,
现在想在Select出的结果中,过滤掉该段字符,请问该如何操作?内容示例:\t3\n宋体\c#000000\b\s\u\C干地未来战士下雨\t3\n宋体\c#000000\C终于成功了~~\t6\n幼圆\c#FF0000\C测试

解决方案 »

  1.   

    select 
      RIGHT(col,charindex('C',col)-2)
    from
      tb 
      

  2.   

    use Tempdb
    go
    --> --> 
     
    if not object_id(N'Tempdb..#A') is null
    drop table #A
    Go
    Create table #A([COl] nvarchar(32))
    Insert #A
    select N'\t3\n宋体\c#000000\b\s\u\C干地未来战士下雨' union all
    select N'\t3\n宋体\c#000000\C终于成功了  ' union all
    select N'\t6\n幼圆\c#FF0000\C测试'
    Go
    Select STUFF([COl],CHARINDEX('\',[COl]),PATINDEX('%\C[^#]%',[COl])-CHARINDEX('\',[COl])+2,'') 
    from #A/*
    干地未来战士下雨
    终于成功了  
    测试
    */
      

  3.   

    ----------------------------------------------------------------
    -- Author  :fredrickhu(小F,向高手学习)
    -- Date    :2011-10-11 10:57:15
    -- Version:
    --      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (Intel X86) 
    -- Apr 22 2011 11:57:00 
    -- Copyright (c) Microsoft Corporation
    -- Enterprise Evaluation Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64)
    --
    ----------------------------------------------------------------
    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go 
    create table [tb]([col] varchar(42))
    insert [tb]
    select '\t3\n宋体\c#000000\b\s\u\C干地未来战士下雨' union all
    select '\t3\n宋体\c#000000\C终于成功了~~' union all
    select '\t6\n幼圆\c#FF0000\C测试'
    --------------开始查询--------------------------
    select 
      RIGHT(col,charindex('c',REVERSE(col))-1)
    from
      tb 
    ----------------结果----------------------------
    /* ------------------------------------------
    干地未来战士下雨
    终于成功了~~
    测试(3 行受影响)*/
      

  4.   

    select stuff( 字段,charindex('\',字段),charindex('\C',字段)-charindex('\',字段)+2,'') from tb
      

  5.   


    --> 测试数据: [tb]
    if object_id('[tb]') is not null drop table [tb]
    create table [tb] (col varchar(42))
    insert into [tb]
    select '\t3\n宋体\c#000000\b\s\u\C干地未来战士下雨' union all
    select '\t3\n宋体\c#000000\C终于成功了~~' union all
    select '\t6\n幼圆\c#FF0000\C测试'--开始查询
    select RIGHT(col,len(col)-PATINDEX('%\C[^#]%',col)-1) 
    from [tb]--结束查询
    drop table [tb]/*
    ------------------------------------------
    干地未来战士下雨
    终于成功了~~
    测试(3 行受影响)