删除带条件的前导字符

时间:2013-01-08 12:50:59

标签: sql sql-server sql-server-2008

我有一个带有字段ID的表。

以下是一些示例值:

  1. 0001
  2. 0002
  3. 990003
  4. 990004
  5. 880005
  6. 880006
  7. 888006
  8. 我有一个观点我可以获取这些记录,我需要删除99/88(在我的情况下它是一个预先知道的前缀是99或88 ...请记住,有效的id也是让我们说需要转换为8888的888888!

    我知道如果所有记录都有前导99或88我可以使用:

    SELECT RIGHT(MyColumn, LEN(MyColumn) - 2) AS MyTrimmedColumn
    

    如果有领先的99/88,我将如何包含条件否则不进行修剪?

    预期输出为:

    1. 0001
    2. 0002
    3. 0003
    4. 0004
    5. 0005
    6. 0006
    7. 8006
    8. 该函数应该是select查询的一部分,而不是一个独立的查询(问题的例子 - 字段ID)!

      SELECT
      ISNULL(ProcId,0) ProcId,
      ISNULL(ID,'') ID,
      ...
      

2 个答案:

答案 0 :(得分:4)

SELECT case when mycolumn >= 880000 
            then RIGHT(MyColumn, LEN(MyColumn) - 2) 
            else mycolumn
       end AS MyTrimmedColumn

SELECT case when mycolumn between 880000 and 889999
            then MyColumn - 880000 
            when mycolumn between 990000 and 999999
            then MyColumn - 990000 
            else mycolumn
       end AS MyTrimmedColumn

答案 1 :(得分:0)

SELECT RIGHT(MyColumn, LEN(MyColumn) - 2) AS MyTrimmedColumn from table-name 
where id like '99%'