저는 Linux에서 작업 중이며 문자열은 다음과 같습니다.
SELECT concat_ws("|",max(date_column),substr(abc,1,9)) key
SELECT concat_ws("|",xyz_date_column,abc) key
아래와 같은 출력을 얻으려면 동적 날짜 열을 문자열로 변환하는 명령 이 필요합니다 sed
. concat_ws 함수에서 해당 열만 변환해야 합니다. concat_ws("|", 각 파일 이후의 모든 내용이 다릅니다.
SELECT concat_ws("|",(CAST (max(date_column) as string)),substr(abc,1,9)) key,
SELECT concat_ws("|",(CAST (xyz_date_column) as string),abc) key
이 명령을 시도했지만 예상한 결과를 얻지 못했습니다.
sed -e 's/concat_ws(\([^\)]*\))/concat_ws(CAST(\1 as string))/g'
답변1
노력하다:
sed -E 's/(concat_ws\("\|",[[:space:]]*)([^,]*),/\1(\2),/;
s/(concat_ws\("\|",[[:space:]]*)([^,]*),/\1(CAST (\2 as string)),/' infile
첫 번째 부분은 다음과 같습니다.데이터 열
추가 브래킷이 있는 부분;던지다.
산출:
SELECT concat_ws("|",(CAST ((max(date_column)) as string)),substr(abc,1,9)) key
SELECT concat_ws("|",(CAST ((xyz_date_column) as string)),abc) key