是否可以查询特定的数据类型?

时间:2014-03-18 15:43:51

标签: sql sql-server tsql sql-server-2008-r2

我想知道是否有可能编写一个只在该字段包含某种数据类型时返回字段的查询。

因此,例如,我可能希望从搜索或数据类型BIGINT返回数据类型为VARCHAR的所有字段。不只是搜索包含数字或字母的字段。

这是我的伪代码的一个例子:(我知道它不是很令人印象深刻):

select *
from dbo.REP_ALIAS ra
where ra.TRADE_REP [= data type integer] --integer is just an example

是否有某种方法可以对所有数据类型执行此操作,而不仅仅是整数。

另外:我正在使用T-SQL和MS SQL Server 2008 R2。

4 个答案:

答案 0 :(得分:2)

您可以排除非数字

WHERE ra.TRADE_REP NOT LIKE '%[^0-9]%'

答案 1 :(得分:1)

您可以使用 -

> WHERE ISNUMERIC(field)

来源:Checking for numeric value in field + SQL Server

答案 2 :(得分:0)

此问题已在此处的stackoverflow上提出:Check if a varchar is a number (TSQL)
或此处Checking for numeric value in field + SQL Server

select *
from dbo.REP_ALIAS ra
where ISNUMERIC(ra.TRADE_REP) = 1

答案 3 :(得分:0)

创建字段(aka列)时,将设置SQL中任何字段的数据类型。所以我认为您可能打算询问字段的值是否可以转换(或转换)为另一种类型。

这取决于谁在进行转换,以及他们的能力:如果您存储字符串“3/1/2014”,谁确定这是合法的日期,是否在1月或3月? SQL有一些规则,但它们有时与.NET转换不同。

如果字段设置为字符串(通常为NVARCHARVARCHAR),则它只能包含字符串而不是真正的日期时间值。这是SQL中许多hacks的来源,但最好的答案是将字段设置为正确的数据类型。对于不同类型的数据,有时这涉及多个字段,几乎是多余的。

此页面的大约一半是带有SQL本机类型的图表,可以转换为其他类型: http://msdn.microsoft.com/en-us/library/ms187928.aspx