0

フィールドIDのテーブルがあります。

サンプル値は次のとおりです。

  1. 0001
  2. 0002
  3. 990003
  4. 990004
  5. 880005
  6. 880006
  7. 888006

私はこのレコードをフェッチするポイントがあり、99/88を切り取る必要があります(私の場合は99または88のいずれかの既知のプレフィックスです...有効なIDも888888と言うことができることに注意してくださいそれは8888に変換する必要があります!。

すべてのレコードの先頭が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

関数は、スタンドアロンクエリ(問題の例-フィールドID)ではなく、selectクエリの一部である必要があります。

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

2 に答える 2

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
于 2013-01-08T12:53:34.157 に答える
0
SELECT RIGHT(MyColumn, LEN(MyColumn) - 2) AS MyTrimmedColumn from table-name 
where id like '99%'
于 2013-01-08T12:53:25.063 に答える