我有一数据表,其表有一字段 该字段的数据内容 均为:=J$3=T^2 或 =B$2=D^5 等,具体
数据格式就是这样的:=字母$数字=字母^数据 这种类型的数据。
   现在我想将这个字段里面的数据查询出来之后在表格里面显示出这样的效果:
    原先字段:      显示字段:
    =J$3=T^2        J(上标3)T下标2       (J(上标3))就是像J的立方那样(m³)。(T下标2)就是T右下方一个小2那样。
    =B$2=D^5        B(上标2)D下标5  
请各位高手指点一下,看看怎么能完成这个样的效果,小弟在线等,如有不明确的地方,我随时在线向您详细说明!
请各位帮帮忙!拜托!拜托!拜托!拜托!拜托!拜托!拜托!拜托!拜托!拜托!拜托!拜托!拜托!

解决方案 »

  1.   

    格式固定的?
    都是这样?=J$3=T^2 或 =B$2=D^5
      

  2.   

    create table tb(col varchar(50))
    insert into tb values('=J$3=T^2')
    insert into tb values('=B$2=D^5')
    goselect parsename(replace(replace(replace(substring(col , 2 ,len(col)) , '=' , '.'),'$','.'),'^','.'),4) +
           '(上标' +
           parsename(replace(replace(replace(substring(col , 2 ,len(col)) , '=' , '.'),'$','.'),'^','.'),3) +
           ')' + 
           parsename(replace(replace(replace(substring(col , 2 ,len(col)) , '=' , '.'),'$','.'),'^','.'),2) +
           '下标' +
           parsename(replace(replace(replace(substring(col , 2 ,len(col)) , '=' , '.'),'$','.'),'^','.'),1)
    from tbdrop table tb /*------------------------
    J(上标3)T下标2
    B(上标2)D下标5(所影响的行数为 2 行)
    */
      

  3.   

    如果格式都是这样就好办,如六楼的方法.其中parsename的用法见帮助.PARSENAME
    返回对象名的指定部分。可以检索的对象部分有对象名、所有者名称、数据库名称和服务器名称。说明  PARSENAME 函数不表明所指定名称的对象是否存在,而只是返回给定对象名的指定部分。
    语法
    PARSENAME ( 'object_name' , object_piece ) 参数
    'object_name'要检索其指定部分的对象名。object_name 是 sysname 值。本参数是可选的合法对象名。如果该对象名的所有部分均符合要求,则该名称由以下四部分组成:服务器名称、数据库名称、所有者名称和对象名。object_piece要返回的对象部分。object_piece 是 int 值,可以为下列值。Value 描述 
    1 对象名 
    2 所有者名称 
    3 数据库名称 
    4 服务器名称 
    返回类型
    nchar注释
    如果符合下列条件之一,则 PARSENAME 返回 NULL 值: object_name 或 object_piece 为 NULL 值。
    发生语法错误。
    所请求的对象部分长度为 0,并且是无效的 Microsoft® SQL Server™ 标识符。零长度的对象名将导致整个合法名称无效。 
    示例
    本示例使用 PARSENAME 返回有关 pubs 数据库中 authors 表的信息。USE pubs
    SELECT PARSENAME('pubs..authors', 1) AS 'Object Name'
    SELECT PARSENAME('pubs..authors', 2) AS 'Owner Name'
    SELECT PARSENAME('pubs..authors', 3) AS 'Database Name'
    SELECT PARSENAME('pubs..authors', 4) AS 'Server Name'下面是结果集:Object Name                    
    ------------------------------ 
    authors                        (1 row(s) affected)Owner Name                     
    ------------------------------ 
    (null)                         (1 row(s) affected)Database Name                  
    ------------------------------ 
    pubs                           (1 row(s) affected)Server Name                    
    ------------------------------ 
    (null)                         (1 row(s) affected)
      

  4.   

    高手!如果我的数据表格里面的字段还有一种情况就是普遍是这样的:'=B$2=D^5',但是万一有一中情况是:=B$2。这样的!那么,请问前辈,你的代码我应该修改那些位置可以正常使用,目前您的代码使用于:=B$2=D^5这种情况,遇到=B$2这样的情况该字段显示为空。
      

  5.   

    create table tb(col varchar(50))
    insert into tb values('=J$3=T^2')
    insert into tb values('=B$2=D^5')
    insert into tb values('=B$2')
    goselect parsename(replace(replace(replace(left(reverse(col),len(col)-1),'=','.'),'$','.'),'^','.'),1) + 
           '(上标' +
           parsename(replace(replace(replace(left(reverse(col),len(col)-1),'=','.'),'$','.'),'^','.'),2) +
           ')' + 
           isnull(parsename(replace(replace(replace(left(reverse(col),len(col)-1),'=','.'),'$','.'),'^','.'),3)+'下标','') + 
           isnull(parsename(replace(replace(replace(left(reverse(col),len(col)-1),'=','.'),'$','.'),'^','.'),4),'') as col
    from tbdrop table tb /*
    col              
    -----------------
    J(上标3)T下标2
    B(上标2)D下标5
    B(上标2)(所影响的行数为 3 行)*/