使用TD14执行以下脚本。当我运行最终的SELECT时,HashedField返回F5-23-BA-34
,但是HashedConstant返回2C-30-5B-4F
。
请注意,对于INSERT,我如何将常量限定No
为constant
,然后hashrow()
在该限定符上使用。当散列的限定符进入时,它2C-30-5B-4F
按预期进行。但是,当我尝试在选择中哈希字段本身时,我得到了F5-23-BA-34
。这对我来说毫无意义。
create table mydb.mytable (
val VARCHAR(3) CHARACTER SET LATIN NOT CASESPECIFIC,
prehashedval byte(4)
);
insert into mydb.mytable
select 'No' constant, hashrow(constant);
select
hashrow(val) HashedField,
prehashedval,
hashrow('No') HashedConstant
from mydb.mytable;
它不是相同的字符串:-)
一个字符串字面量始终以Unicode,它从拉丁文哈希不同:
CREATE VOLATILE TABLE mytable (
MyField VARCHAR(3) CHARACTER SET LATIN NOT CASESPECIFIC,
MyField_U VARCHAR(3) CHARACTER SET UNICODE NOT CASESPECIFIC
) ON COMMIT PRESERVE ROWS;
INSERT INTO mytable('No', 'No');
SELECT
HASHROW(MyField) HashedField,
HASHROW(TRANSLATE('No' USING unicode_to_latin)),
HASHROW(MyField_U) HashedField_U,
HASHROW('No')
FROM mytable;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句