我写了这个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
是一个整数。我已经尝试了很多东西,比如强制转换将id转换为字符串CAST( id as varchar)
。但是没有任何效果。我仍然收到此错误消息。
错误:您的SQL语法出错;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近'varchar),',eindeutige Kombination aus abfid und 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);')
UPDATE
问题解决了。我必须使用cast(whatever as char)
代替cast(whatever as varchar)
答案 0 :(得分:1)
您根本不需要转换或转换(无论如何,您应该使用cast(whatever as char)
而不是varchar
)。
您在"
附近缺少eindeutige Kombination aus abfid und parentid
,否则您的插入语句将无效:
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
P.S。:这是陈述
的manual entry结果的类型可以是以下值之一:
- BINARY [(N)]
- CHAR [(N)]
- DATE
- DATETIME
- DECIMAL [(M [,d)]
- 签名[INTEGER]
- TIME
- UNSIGNED [INTEGER]
证明:
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)
P.S。:在这里可以看到,idx_1
列中name
周围的引号也丢失了。
答案 1 :(得分:0)
使用CONVERT函数,我认为这将解决您的情况