2017-04-07 1 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) 확인해 주셔서 감사합니다! –