将Oracle中的varchar2与不同的字符集进行比较?

时间:2016-11-04 15:17:08

标签: sql oracle11g

我在表格中有一列定义为Varchar2(4000),名为tbl_varchar。 我从客户端获得一个输入参数到varchar2(4000)的存储过程。我称之为input_varchar

我想仅在内容发生变化时更新:

Update table t SET tbl_varchar = input_varchar, updated = sysdate 
WHERE key = input_key and tbl_varchar != input_varchar;

我使用相同的输入多次运行它,看到我的时间戳每次都更新,但varchar数据似乎没有变化。

这与客户端和数据库上的不同字符集有什么关系吗?如果是这样,确认它的最佳方法是什么?我无法控制客户。

1 个答案:

答案 0 :(得分:0)

如果那是关于charset你可以尝试:

Update table t SET tbl_varchar = input_varchar, updated = sysdate 
WHERE key = input_key and convert(tbl_varchar, 'US7ASCII') != convert(input_varchar, 'US7ASCII');

或者将您的字符集改为'US7ASCII'

我还会添加trim()这两个值。也许问题在于一些空白。