2017-04-07 21 views
2

日付フィールドを文字列形式で扱うのに問題がありますので、ベースをサニタイズしようとしています。ベースのデフォルトの日付形式は "%d /%m /%Y"ですが、これはcsvファイルから来るので、おそらくいくつかの望ましくない文字列があります。このようデータの日付の日付フィールド

parse_date('%d/%m/%Y',trim(e.checkin)) 

を、私は実行するたびに私は新しい問題のある文字を取得します::私は解析しようとすると、私はエラーを取得しています

Illegal non-space trailing data '�' in string "25/07/201€" 

これに対処するための最良の方法は何ですか?この問題に対処する

答えて

1

コアはその後、「壊れた」checkinフィールド

でそれらの行を特定している、あなただけの

#standardSQL 
WITH e AS (
    SELECT '25/07/201€' AS checkin UNION ALL 
    SELECT '25/07/2016' 
) 
SELECT 
    checkin AS checking_string, 
    PARSE_DATE('%d/%m/%Y',TRIM(e.checkin)) AS checking_date 
FROM e 
WHERE REGEXP_CONTAINS(e.checkin, r'^(\d){2}/(\d){2}/(\d){4}$') 

か、ロジックに来ることができ、以下のようにそれらを処理してスキップすることができます何らかの特別な壊れた値を扱うこと

いずれにしても、WHERE REGEXP_CONTAINS(e.checkin, r'^(\d){2}/(\d){2}/(\d){4}$')のアプローチを使用すると、状況を制御することができます

これは、十分な指示を与えることを望む

+0

ありがとう@Mikhail!驚くばかり!それは働いている! –

+0

よろしく!私はそれを知っていた:o)確認していただきありがとうございます! –

関連する問題