Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将int转换为与concat()一起使用_Mysql_Sql_Concat - Fatal编程技术网

Mysql 将int转换为与concat()一起使用

Mysql 将int转换为与concat()一起使用,mysql,sql,concat,Mysql,Sql,Concat,我写了以下sql语句: SELECT concat( 'INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_', name, ',', id, ',eindeutige Kombination aus abfid und parentid);') FROM dev_sys_tables

我写了以下sql语句:

SELECT concat(
            'INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_',
            name,
            ',',
            id,
            ',eindeutige Kombination aus abfid und parentid);') 
    FROM dev_sys_tables 
    WHERE datenmodell=350 
但是,由于
id
是一个整数,因此输出只是一堆十六进制数。我尝试过很多方法,比如cast-an将id转换为字符串,
cast(id为varchar)
,但都没有效果。我仍然收到这个错误消息

错误:您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在“varchar”附近,有一个字母“abfid”和“parentid”);'

)

任何帮助都将受到欢迎

工作正常:

concat(
    'INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_',
    name,
    ',',
    cast(id as char),
    ',eindeutige Kombination aus abfid und parentid);') 
仅获取一堵数字墙:

concat(
    'INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_',
    name,
    ',',
    id,
    ',eindeutige Kombination aus abfid und parentid);')
更新
问题解决了。我必须使用
cast(无论作为char什么)
而不是
cast(无论作为varchar什么)

使用CONVERT函数,我认为这将解决您的问题

您根本不需要转换或强制转换(而且您应该使用
cast(无论作为char什么)
而不是
varchar

您缺少
关于
eindeutige Kombination aus abfid and parentid的信息,或者您的insert语句不起作用:

SELECT concat('INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_',name,',',id,',"eindeutige Kombination aus abfid und parentid");') 
FROM dev_sys_tables 
WHERE datenmodell=350 
注:这是一份声明

结果的类型可以是以下值之一:

  • 二进制[(N)]
  • 字符[(N)]
  • 日期
  • 日期时间
  • 十进制[(M[,D])]
  • 有符号[整数]
  • 时间
  • 无符号[整数]
证明:

mysql> select id, id from tasks;
+------+------+
| id   | id   |
+------+------+
|    1 |    1 |
|    2 |    2 |
|    3 |    3 |
+------+------+
3 rows in set (0.00 sec)

mysql> SELECT concat('INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_',id,',',id,',"eindeutige Kombination aus abfid und parentid");') from tasks;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| concat('INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_',id,',',id,',"eindeutige Kombination aus abfid und parentid");') |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_1,1,"eindeutige Kombination aus abfid und parentid");                     |
| INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_2,2,"eindeutige Kombination aus abfid und parentid");                     |
| INSERT INTO dev_sys_index (name,tableid,descrition) VALUES (idx_3,3,"eindeutige Kombination aus abfid und parentid");                     |
+-------------------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

注意:这里可以看到,在
name

列中,
idx_1
周围也缺少引号。您到底想做什么?我试图用concat创建一个insert语句,concat只接受字符串变量,所以主要问题是将id从int转换为string,以便在这个concat语句中使用它mysql中的.CONCAT可以使用整数作为参数。
CONCAT(1,2)
将给出
12
我知道……这是我的问题。我尝试了这个
SELECT CONCAT('INSERT INTO dev_sys_index(name,tableid,description)值(idx','asd',','1',eindeutige Kombination aus abfid and parentid);'))
并且它可以工作……我尝试了许多类似转换的方法(VARCHAR,id)但没有任何效果。我在互联网上搜索了很长时间;'是一个字符串。当我删除id并将字符串变量放在那里时,它起作用了…所以我与此无关。我知道错误消息看起来像是问题所在,但它不是。但你是对的。我应该使用cast(作为char的任意内容)而不是cast(作为varchar的任意内容)这就是问题所在。谢谢!@kai No,你混淆了concat函数中的一些逗号和单引号。正确设置代码格式,这种情况不太可能发生。我尝试了你的查询并进行了调整,效果很好。无需强制转换或转换。请查看我的编辑…对我来说,如果我转换整型,它在没有你的引号的情况下工作!如果我不转换整型convert也会执行,但我只得到hexNumber。是的,CONCAT()可以工作,但是insert语句不能!这就是我要告诉你的。