这个查询出了什么问题(UNION SELECT SUBSTRING)

时间:2013-01-28 17:00:29

标签: mysql union

我有一个问题:

select first_name from users where user_id=1 
UNION 
SELECT IF(SUBSTRING user(),1,4) = 'root',SLEEP(5),1);

每当我运行它时,我都会收到以下错误:

ERROR 1064 (42000): You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near 'user(),1,4) = 'root',SLEEP(5),1)' at line 1

我的目的是测试用户是否是root用户。

SUBSTRING user(),1,4)表示:从位置1开始,得到四个字符(基本上是root)。如果数据库用户是root,则暂停5秒。

但是SLEEP(5),1)除了指示暂停指定的5秒之外它意味着什么?

非常感谢

1 个答案:

答案 0 :(得分:1)

正确的罪孽是:

IF(SUBSTRING(user(),1,4) = 'root',SLEEP(5),1)

你错过了(。也许你也可以用这个:

IF(user() like "root%", SLEEP(5), 1).

Sleep(n)暂停执行查询n秒。我发现它并不真正有用......但它可以做到。