现在我有一张表假设:
id a1 a21 2@4   2 5@33 5@5   现在我想通过一个存储过程一条一条记录的取出并将前a1的值拆分然后进行比较并把结果存放到a2镇南关执行结果为:
id a1      a2 1 2@4     小于2 5@3     大于3 5@5     相等

解决方案 »

  1.   

    UPDATE tb
    SET a2 =
    CASE 
    WHEN CAST(LEFT(a1, CHARINDEX('@', a1)-1) AS INT) > CAST(RIGHT(a1, LEN(a1)-CHARINDEX('@', a1)) AS INT) THEN N'小于'
    WHEN CAST(LEFT(a1, CHARINDEX('@', a1)-1) AS INT) < CAST(RIGHT(a1, LEN(a1)-CHARINDEX('@', a1)) AS INT) THEN N'大于'
    WHEN CAST(LEFT(a1, CHARINDEX('@', a1)-1) AS INT) = CAST(RIGHT(a1, LEN(a1)-CHARINDEX('@', a1)) AS INT) THEN N'等于'
    ELSE N'无法比较'
    END
    WHERE ISNUMERIC(REPLACE(a1, '@', '')) = 1
      

  2.   

    ISNUMERIC(REPLACE(a1, '@', '')) = 1
      

  3.   


    UPDATE tb
    SET a2 =
        CASE 
            WHEN CAST(LEFT(a1, CHARINDEX('@', a1)-1) AS INT) > CAST(RIGHT(a1, LEN(a1)-CHARINDEX('@', a1)) AS INT) THEN N'小于'
            WHEN CAST(LEFT(a1, CHARINDEX('@', a1)-1) AS INT) < CAST(RIGHT(a1, LEN(a1)-CHARINDEX('@', a1)) AS INT) THEN N'大于'
            WHEN CAST(LEFT(a1, CHARINDEX('@', a1)-1) AS INT) = CAST(RIGHT(a1, LEN(a1)-CHARINDEX('@', a1)) AS INT) THEN N'等于'
            ELSE N'无法比较'
        END