2009-08-03 65 views
9

如果我定义了一个类似于set @a = "1";的变量。我怎么看到@a是一个字符串?在MySQL中获取变量的类型

+0

这里我就不让你的方法。我不认为你可以在mysql中得到一个变量类型,但我可能是错误的 – marcgg 2009-08-03 16:17:05

+0

@marcgg,我认为你“得到”他的意思。 – Pacerier 2015-04-16 06:35:26

+0

由于变量必须先声明特定类型,您应该已经知道@a是一个字符串。但显然这里还有更多。你想用这个完成什么? – 2009-08-03 16:15:14

回答

4

您无法确定MySQL中变量的类型。

作为替代方案,您可以轻松地CAST()您的变量类型,你的愿望:

@a = CAST(123 AS CHAR); 

更多信息和MySQL手册中铸造的例子:

11.9. Cast Functions and Operators

10

您可以确定MySQL中变量的类型。通过选择变量创建表格,然后检查列类型:

set @a:="1"; -- your variable 

drop temporary table if exists foo; 
create temporary table foo select @a; -- dirty magic 
desc foo; 
+-------+----------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+-------+----------+------+-----+---------+-------+ 
| @a | longtext | YES |  | NULL |  | 
+-------+----------+------+-----+---------+-------+ 
0

在MySql中,您无法识别变量的数据类型。但是,有一种方法,通过使用cast识别仅字符串和整数:

set @a = "11"; 
SELECT CAST(@a AS SIGNED); // Output : 11 

set @a = "text"; 
SELECT CAST(@a AS SIGNED); // Output : 0 


set @a = "121212"; 
SELECT CAST(@a AS SIGNED); // Output : 121212 

set @a = "Mysql is open source"; 
SELECT CAST(@a AS SIGNED); // Output : 0