0

MSSQL DB にvarcharトランザクション IDを持つトランザクション参照テーブルがあります。

eg. 20121018A436712SF2CPMQ7177

ただし、一部のトランザクションでは、次のような特別な識別子の形でノイズが発生します。

1114
1160
H600
....
....
etc

REPLACEステートメントを使用してそれらを置き換えることを考えていました

select REPLACE (identifier, '%1114%', '') from Transactions

しかし、これらすべての条件を使用してREPLACEを実行する方法がわかりません。

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

1

「特別な識別子」のテーブルを作成して入力します。たとえば、

create table special_identifiers (
   id int identity not null primary key clustered,
   key varchar(10) not null unique
);

次に、SELECT でこれらの特別な ID を次のように削除します。

    SELECT i.col1, i.col2,
           CASE WHEN si.key IS NOT NULL then '' ELSE i.identifier END identifier
      FROM Transactions i
 LEFT JOIN special_identifiers si on si.key = i.identifier

これは、「xxx」などの ID の任意の場所で LIKE を削除する必要がある場合に、簡単に拡張できます。

 LEFT JOIN special_identifiers si on i.identifier LIKE '%' + si.key + '%'

key柔軟性を高めるために、列自体に % を追加するだけですが。

最後に、単にテーブルを永続化できない場合は、いつでも仮想的に作成できます。

    SELECT i.col1, i.col2,
           CASE WHEN si.key IS NOT NULL then '' ELSE i.identifier END identifier
      FROM Transactions i
 LEFT JOIN (select '1114' key UNION ALL
            select '1160') si on si.key = i.identifier
于 2012-10-26T09:21:00.343 に答える
0

固定長の文字列、たとえば 12 文字の場合Transaction identifier、右端の 12 文字を次のように選択できます。

SELECT RIGHT(identifier_column,12)
于 2012-10-26T11:01:28.720 に答える