我正在尝试使用以下过程向 sp1 表添加值。 但它不会检索正确的十六进制值。
create table sp1(
id varchar(10),
txt varchar(10)
);
create procedure sp_ins1(p varchar(10))
BEGIN
set @x = char_length(p);
set @y = binary(p);
insert into sp1(id,txt)
values(@x,@y);
END;
通过调用以下函数将值添加到表中。
call sp_ins1(4);
call sp_ins1(13);
call sp_ins1(45);
select * from sp1\g
这就是结果
+------+----------+
| id | txt |
+------+----------+
| 1 | 34 |
| 2 | 3133 |
| 2 | 3435 |
| 4 | 36373537 |
| 1 | 31 |
+------+----------+
这是什么原因?
最佳答案
不明白问题所在。另外sp_ins7
!= sp_ins1
。
尝试:
mysql> SELECT
-> CHAR_LENGTH('4') `id`,
-> BINARY('4') `txt_BIN`,
-> HEX('4') `txt_HEX`
-> UNION
-> SELECT
-> CHAR_LENGTH('13') `id`,
-> BINARY('13') `txt_BIN`,
-> HEX('13') `txt_HEX`
-> UNION
-> SELECT
-> CHAR_LENGTH('45') `id`,
-> BINARY('45') `txt_BIN`,
-> HEX('45') `txt_HEX`
-> UNION
-> SELECT
-> CHAR_LENGTH('6757') `id`,
-> BINARY('6757') `txt_BIN`,
-> HEX('6757') `txt_HEX`
-> UNION
-> SELECT
-> CHAR_LENGTH('1') `id`,
-> BINARY('1') `txt_BIN`,
-> HEX('1') `txt_HEX`;
+----+---------+----------+
| id | txt_BIN | txt_HEX |
+----+---------+----------+
| 1 | 4 | 34 |
| 2 | 13 | 3133 |
| 2 | 45 | 3435 |
| 4 | 6757 | 36373537 |
| 1 | 1 | 31 |
+----+---------+----------+
5 rows in set (0.00 sec)
关于mysql - 不从 MySql 存储过程中检索正确的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45004907/