navicat导出sql bit字段包含soh字符

Life is short , play more!
本文来自lihao's Blog,转载请注明。

在用mysql客户端工具导出或者拷贝成sql语句时,例如在使用navicat,导出的sql可以看到soh字符。

UPDATE `mycapital`.`capital` SET `id`='1', `capital_key`='0001', `user_key`='0001', `type`='REGISTER', `available`='8.70', `frozen`='0.00', `is_from_app`='', `create_time`='2017-02-26 15:47:59', `update_time`='2017-06-22 12:25:02', `version`='1' WHERE (`id`='19');

大家可以看到is_from_app = 后面是一个方框,因为这是一个不可见字符,用纯文本编辑工具打开时,会线程一个’soh’ 的占位符。 看了下表结构,is_from_app 是一个bit类型。 且这个值是1。 当是0时,这里显示的’\0’, 1的时候显示 SOH。

那么我们查看下ASCII的控制符的编码表就知道为什么了。


Char Number Description
NUL 00 null character
SOH 01 start of header
STX 02 start of text
ETX 03 end of text
EOT 04 end of transmission
ENQ 05 enquiry
ACK 06 acknowledge
BEL 07 bell (ring)
BS 08 backspace
HT 09 horizontal tab
LF 10 line feed
VT 11 vertical tab
FF 12 form feed
CR 13 carriage return
SO 14 shift out
SI 15 shift in
DLE 16 data link escape
DC1 17 device control 1
DC2 18 device control 2
DC3 19 device control 3
DC4 20 device control 4
NAK 21 negative acknowledge
SYN 22 synchronize
ETB 23 end transmission block
CAN 24 cancel
EM 25 end of medium
SUB 26 substitute
ESC 27 escape
FS 28 file separator
GS 29 group separator
RS 30 record separator
US 31 unit separator
DEL 127 delete (rubout)

经过验证,执行navicat导出的sql,其中包含了‘soh’ 占位符,可以执行成功,且更新的数据正确。 所以这里只是一个展示,当我们再看到sql脚本文件里的soh等类似的占位符的时候,我们就不会再奇怪了。


发表评论

电子邮件地址不会被公开。 必填项已用*标注