我在表格中有一列定义为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数据似乎没有变化。
这与客户端和数据库上的不同字符集有什么关系吗?如果是这样,确认它的最佳方法是什么?我无法控制客户。
答案 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()
这两个值。也许问题在于一些空白。