SQL:在表中查找值

时间:2014-06-11 12:21:35

标签: sql select

我的数据库表格如下:

 ID  | key | val_string | val_integer | val_timestamp
 ----------------------------------------------------
  1  |Name | name1      | NULL        | NULL
  1  |Age  | NULL       | 10          | NULL
  1  |DOB  | NULL       | NULL        | 11-06-2004 11:33:00
  2  |Name | name2      | NULL        | NULL
  2  |Age  | NULL       | 20          | NULL
  2  |DOB  | NULL       | NULL        | 10-06-1994 10:38:00

现在,我的应用程序接受用户的输入并返回ID匹配。

例如,如果用户输入为10,那么我应该能够找到ID 1.类似地,如果用户输入是name2,我应该能够找到ID 2.

这里的问题是,所有的值字段都是不同的数据类型,即。 val_string是字符串类型,val_integer是整数类型,依此类推。但是,我们不知道用户输入的类型。

2 个答案:

答案 0 :(得分:1)

使用Cast将数据类型转换为字符串,这是CAST上的一些链接

http://www.1keydata.com/sql/sql-cast.html

http://msdn.microsoft.com/en-us/library/ms187928.aspx

希望这会有所帮助

如果不让我知道,我会看看我是否能找到另一种解决方案

答案 1 :(得分:1)

您可以添加另一个varchar列" searchstring"包含数据为字符串。如果字符串与数据完全相同,则视图可能是更好的解决方案。

create view foo as select id,val_string from mytable where val_string is not null 
union select id,cast(val_integer as varchar) from mytable where val_integer is not null 
union select id,cast(val_timestamp as varchar) from mytable where val_timestamp is not null;