如何在sql中“TryCast”数据

时间:2011-12-10 02:05:19

标签: c# sql sql-server

Table1具有要导入Table2的数据。 Table1仅包含varchar字段,但它们将被转换为它们将在Table2中导入的任何字段的类型。

数据必须一次导入一行,所以我可以捕获异常以找出哪些行导致问题,但这并不能告诉我哪个列是罪魁祸首,如果有很多例外,那么它的速度要慢一些而不仅仅是提前检查有效数据(更不用说我希望能够在开始导入过程之前解决问题...最好不必实际进行交易并将其回滚以找出问题所在)

理想情况下,我想做这样的事情:

select RowNumber from table where cast(fieldName as SomeDataType) = 0

显然这句话没有意义,因为这不是演员所做的,但我的想法是我想要一个函数试图转换数据并根据演员是否成功返回true或false值

有一些简单的方法可以做到这一点,我忽略了吗?

1 个答案:

答案 0 :(得分:3)

相关帖子:

MS SQL server casting without exception

How do I TryParse in SQL 2000?

您可能最终需要编写一个用户定义的函数,它结合了一些不同的方法来尝试强制转换。由于这是一个重要的因素,我认为表现不是最关心的问题;调用UDF 减慢进程。

您还可以尝试编写CLR存储过程并使用.NET类型检查和转换来至少对数据进行广泛分类(由于.NET和T-SQL之间的类型不同,确切的分类可能很困难。) p>