mysql-在插入前用单引号包围预计算变量

fzsnzjdm  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(337)

我的表的主键是一个固定长度为11的字符。
我在脚本中预先计算了密钥,如下所示: SET pes = LPAD(person_number, 11, '0'); 现在,我的变量符合我的标准。它只需要添加到数据库中。 INSERT INTO db VALUES(pes, ...); 这就是我的问题所在——因为主键应该是char,所以我需要将变量的值放在单引号中。
但是,我不知道怎么做。我试图逃离他们,但是 '\''pes'\'' 不起作用。
有没有一个简单的方法来实现这一点?

lokaqttq

lokaqttq1#

您可以尝试使用多个单引号 concat 功能。

INSERT INTO db VALUES(concat('''', @pes,''''), ...);

这是一个样本
架构(mysql v5.7)

CREATE TABLE T(col varchar(50));

SET @pes = '1234';                

INSERT INTO T VALUES (concat('''', @pes,''''));

查询#1

select col
FROM T;

| col    |
| ------ |
| '1234' |

db fiddle视图

oxalkeyp

oxalkeyp2#

这应该不是问题!
这个 mySql varchar数据类型应该接受数字!

CREATE TABLE USERS (USER_ID VARCHAR(255) NOT NULL UNIQUE PRIMARY KEY,
                    USER_NAME VARCHAR(255));
SET @U_ID = LPAD(2018, 11, '0');
INSERT INTO USERS VALUES (@U_ID, 'USER_1'),(2, 'USER_2');

SELECT * FROM USERS;

将输出:

USER_ID      |  USER_NAME
-------------------------
00000002018  |  USER_1
2            |  USER_2

这是一把小提琴

相关问题