2016-07-05 7 views
1

データをスクラブするには、私のプログラムに多くのハードコード値があります。私はそれらの値をテーブルに入れようとしています。このスクラブの条件の1つは、文字の長さとコード(character_length(name) = 1)を見つけることです。

しかし、私は^.$を使用してこれをエミュレートしようとすると、¿¥Ã

のような値は、私が何か間違ったことをやっているなら、私に知らせてくださいキャッチされていません。

私は、コードの下に実行し、私はこの3つの値¿参照、¥、Ã

select name from email_table 
where character_length(name) = 1 
and name not in 
    (select name from email_table 
    where regexp_similar(translate(name USING LATIN_TO_UNICODE WITH ERROR),'^.$', 'i') = 1) 
+0

Teradataの正規表現が、文字/コードポイント文字列ではなくバイトシーケンスと非常によく似ています。 –

+0

これは私のために正常に動作します。ソース列がLATINのときにTRANSLATEを使用する理由は何ですか? – dnoeth

+0

はい。ソース列はラテン語で、翻訳を使用しない場合はメッセージが表示されます。SELECT Failed。 [6706]文字列に翻訳できない文字が含まれています。 – Kiran

答えて

0

問題はバージョンによるものであるように思えます。 TD14とTD15が異なるサーバーにあり、クエリを実行しました regexp_similar( '¥'、 '^。$'、 'i')= 1の場合の選択ケース 'Y' else 'N' end as出力; TD 14の場合、出力は「N」、TD 15の場合は「Y」です。

関連する問題