Oracle SQL语句从双重选择u''

时间:2017-09-01 09:46:34

标签: sql oracle postgresql unicode

我在oracle关键词和保留词的列表上搜索得很长,但是没有用。

u''部分是什么意思?

我一直在尝试将Oracle数据库对象转换为PostgreSQL。我遇到了一个语句Coalesce(some_field,u''),这个语句在Postgres中返回语法错误

如果参数都没有返回任何非null值,则假定Coalesce返回null。但是在执行select u'' from dual时,我可以看到结果为null。我不确定他们为什么把它包含在Coalesce(some_field,u'')声明中。

如果声明中根本不存在u''部分,那么假设该声明是否可行是否安全?

我见过面的人,完全否认在oracle中存在这种用法u''谷歌搜索结果并没有成果,因为我不知道这个概念。

注意: 但在执行select Coalesce('sampleee text',u'') from dual

我收到以下错误:

ORA-12704: character set mismatch
12704. 00000 -  "character set mismatch"

但是在执行select Coalesce(u'sampleee text',u'') from dual时,我得到'sampleee text'作为结果并且没有错误......

所以我怀疑它与类型转换到unicode字符集有关。但我可能错了。

A̶n̶y̶̶O̶r̶a̶c̶l̶e̶r̶s̶/̶T̶O̶M̶(̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶̶

更新 似乎你是一个前缀来表示该字符串包含Unicode字符串... select chr(222),u'\00DE' from dual; refer this

我很感谢任何PostgreSQL粉丝向我推荐一种将其转换为Postgres的替代解决方案

1 个答案:

答案 0 :(得分:1)

这更像是评论。 @a_horse_with_no_name为真,coalesce(some_fild, '')应该有效。

与Oracle不同,Postgres转换为implicit

要进行显式转换,请使用convert_to(string text, dest_encoding name)。 参考是here