You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by zilong xiao <ac...@gmail.com> on 2020/07/31 12:12:20 UTC

Flink sql 转义字符问题

SPLIT_INDEX(${xxx}, ';',
0),想从字符串中按分号切割,可是分号应该是特殊字符,语法检查总是不能通过,网上查说是可以转义,但是也没太搞懂怎么才能转义,有遇到过类似问题的大佬求指点~~

Re: Flink sql 转义字符问题

Posted by zilong xiao <ac...@gmail.com>.
非常感谢您的回复,恰好我的SQL中既用到了;
也用到了\n,但是非常奇怪的是,直接使用时前者会报语法异常,而后者不会,在把;使用Unicode转义后,作业能够正常运行,且数据处理也ok,flink
版本是 1.10,初步判断可能是前端SQL传递有问题😓

Leonard Xu <xb...@gmail.com> 于2020年7月31日周五 下午9:13写道:

> Hi, zilong
>
> SPLIT_INDEX(${xxx}, ‘;’, 0)
>
>  ‘;’ 分号不是特殊字符,编译时应该不会报错的,我在Flink 1.11.1 用DDL 测试了下, 能够work的,不知道你的环境是怎样的。
>   U&'\003B'  是 ; 的 unicode编码,所以用这个unicode编码是可以的,但一般这种用法是在需要用不可见字符分割时我们这样使用,
>   比如 \n 对应的s是 U&'\\000A’ ,\r 对应的是 U&'\\000D’,
> 对于分号这种可见字符来讲,不需要用unicode编码就可以的。
>
> 祝好
> Leonard
>
> > 在 2020年7月31日,20:46,zilong xiao <ac...@gmail.com> 写道:
> >
> > U&'\003B'  这么写就可以了 感觉好奇怪啊。。
> >
> > 李奇 <35...@qq.com> 于2020年7月31日周五 下午8:25写道:
> >
> >> 加反斜杠就可以。\;  只不过分号应该不是特殊字符吧。
> >>
> >>> 在 2020年7月31日,下午8:13,zilong xiao <ac...@gmail.com> 写道:
> >>>
> >>> SPLIT_INDEX(${xxx}, ';',
> >>>
> >>
> 0),想从字符串中按分号切割,可是分号应该是特殊字符,语法检查总是不能通过,网上查说是可以转义,但是也没太搞懂怎么才能转义,有遇到过类似问题的大佬求指点~~
> >>
>
>

Re: Flink sql 转义字符问题

Posted by Leonard Xu <xb...@gmail.com>.
Hi, zilong

SPLIT_INDEX(${xxx}, ‘;’, 0)

 ‘;’ 分号不是特殊字符,编译时应该不会报错的,我在Flink 1.11.1 用DDL 测试了下, 能够work的,不知道你的环境是怎样的。
  U&'\003B'  是 ; 的 unicode编码,所以用这个unicode编码是可以的,但一般这种用法是在需要用不可见字符分割时我们这样使用,
  比如 \n 对应的s是 U&'\\000A’ ,\r 对应的是 U&'\\000D’, 对于分号这种可见字符来讲,不需要用unicode编码就可以的。

祝好
Leonard 

> 在 2020年7月31日,20:46,zilong xiao <ac...@gmail.com> 写道:
> 
> U&'\003B'  这么写就可以了 感觉好奇怪啊。。
> 
> 李奇 <35...@qq.com> 于2020年7月31日周五 下午8:25写道:
> 
>> 加反斜杠就可以。\;  只不过分号应该不是特殊字符吧。
>> 
>>> 在 2020年7月31日,下午8:13,zilong xiao <ac...@gmail.com> 写道:
>>> 
>>> SPLIT_INDEX(${xxx}, ';',
>>> 
>> 0),想从字符串中按分号切割,可是分号应该是特殊字符,语法检查总是不能通过,网上查说是可以转义,但是也没太搞懂怎么才能转义,有遇到过类似问题的大佬求指点~~
>> 


回复: Flink sql 转义字符问题

Posted by Hannan Kan <ha...@foxmail.com>.
我看官方文档https://help.aliyun.com/knowledge_detail/62544.html&nbsp;中接口是VARCHAR SPLIT_INDEX(VARCHAR str, VARCHAR sep, INT index)
sep 是字符串类型。是不是要用双引号或者看下分号是不是英文的?


------------------&nbsp;原始邮件&nbsp;------------------
发件人:                                                                                                                        "user-zh"                                                                                    <acidzz163@gmail.com&gt;;
发送时间:&nbsp;2020年7月31日(星期五) 晚上8:46
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: Flink sql 转义字符问题



U&amp;'\003B'&nbsp; 这么写就可以了 感觉好奇怪啊。。

李奇 <359502980@qq.com&gt; 于2020年7月31日周五 下午8:25写道:

&gt; 加反斜杠就可以。\;&nbsp; 只不过分号应该不是特殊字符吧。
&gt;
&gt; &gt; 在 2020年7月31日,下午8:13,zilong xiao <acidzz163@gmail.com&gt; 写道:
&gt; &gt;
&gt; &gt; SPLIT_INDEX(${xxx}, ';',
&gt; &gt;
&gt; 0),想从字符串中按分号切割,可是分号应该是特殊字符,语法检查总是不能通过,网上查说是可以转义,但是也没太搞懂怎么才能转义,有遇到过类似问题的大佬求指点~~
&gt;

Re: Flink sql 转义字符问题

Posted by zilong xiao <ac...@gmail.com>.
U&'\003B'  这么写就可以了 感觉好奇怪啊。。

李奇 <35...@qq.com> 于2020年7月31日周五 下午8:25写道:

> 加反斜杠就可以。\;  只不过分号应该不是特殊字符吧。
>
> > 在 2020年7月31日,下午8:13,zilong xiao <ac...@gmail.com> 写道:
> >
> > SPLIT_INDEX(${xxx}, ';',
> >
> 0),想从字符串中按分号切割,可是分号应该是特殊字符,语法检查总是不能通过,网上查说是可以转义,但是也没太搞懂怎么才能转义,有遇到过类似问题的大佬求指点~~
>

Re: Flink sql 转义字符问题

Posted by zilong xiao <ac...@gmail.com>.
实测反斜杠好像也不行

李奇 <35...@qq.com> 于2020年7月31日周五 下午8:25写道:

> 加反斜杠就可以。\;  只不过分号应该不是特殊字符吧。
>
> > 在 2020年7月31日,下午8:13,zilong xiao <ac...@gmail.com> 写道:
> >
> > SPLIT_INDEX(${xxx}, ';',
> >
> 0),想从字符串中按分号切割,可是分号应该是特殊字符,语法检查总是不能通过,网上查说是可以转义,但是也没太搞懂怎么才能转义,有遇到过类似问题的大佬求指点~~
>

Re: Flink sql 转义字符问题

Posted by 李奇 <35...@qq.com>.
加反斜杠就可以。\;  只不过分号应该不是特殊字符吧。

> 在 2020年7月31日,下午8:13,zilong xiao <ac...@gmail.com> 写道:
> 
> SPLIT_INDEX(${xxx}, ';',
> 0),想从字符串中按分号切割,可是分号应该是特殊字符,语法检查总是不能通过,网上查说是可以转义,但是也没太搞懂怎么才能转义,有遇到过类似问题的大佬求指点~~