sql-server - TRY_PARSE 但更快

将大量(将近 100 个)nvarchar 列转换为 float 的最快方法是什么?

目前我有一堆 TRY_PARSE(column-name AS FLOAT) 语句,每列一个。

如果列不解析为 float ,我想要 NULL。没有错误通知,没有额外的智能。

有没有更快的方法?如果是,那会是什么?

SQL 服务器 2012

最佳答案

只是一个简短的测试来显示 TRY_PARSETRY_CAST 之间的性能差异

我的结果

  • TRY_CAST 327 毫秒
  • TRY_PARSE 17784 毫秒

这意味着,TRY_CASTTRY_PARSE 快大约 50 倍(顺便说一句:TRY_CONVERT 几乎与 TRY_CAST 在性能上)。

尝试一下并发布您的结果 ;-)

SET LANGUAGE ENGLISH;

DECLARE @tbl TABLE(SomeFloatAsString VARCHAR(100),fl2 VARCHAR(100),fl3 VARCHAR(100),fl4 VARCHAR(100),fl5 VARCHAR(100),fl6 VARCHAR(100),fl7 VARCHAR(100),fl8 VARCHAR(100),fl9 VARCHAR(100),fl10 VARCHAR(100));
DECLARE @i INT=0;
WHILE @i<100000
BEGIN
    INSERT INTO @tbl VALUES(RAND(),RAND(),RAND(),RAND(),RAND(),RAND(),RAND(),RAND(),RAND(),RAND());
    SET @i+=1;
END

DECLARE @d DATETIME2 = SYSUTCDATETIME();

SELECT TRY_CAST(SomeFloatAsString AS FLOAT) fl1
      ,TRY_CAST(fl2 AS FLOAT) fl2
      ,TRY_CAST(fl3 AS FLOAT) fl3
      ,TRY_CAST(fl4 AS FLOAT) fl4
      ,TRY_CAST(fl5 AS FLOAT) fl5
      ,TRY_CAST(fl6 AS FLOAT) fl6
      ,TRY_CAST(fl7 AS FLOAT) fl7
      ,TRY_CAST(fl8 AS FLOAT) fl8
      ,TRY_CAST(fl9 AS FLOAT) fl9
      ,TRY_CAST(fl10 AS FLOAT)fl10
INTO #tmp1
FROM @tbl

SELECT DATEDIFF(MILLISECOND,@d,SYSUTCDATETIME())


DECLARE @d2 DATETIME2 = SYSUTCDATETIME();

SELECT TRY_PARSE(SomeFloatAsString AS FLOAT) fl1
      ,TRY_PARSE(fl2 AS FLOAT) fl2 
      ,TRY_PARSE(fl3 AS FLOAT) fl3
      ,TRY_PARSE(fl4 AS FLOAT) fl4
      ,TRY_PARSE(fl5 AS FLOAT) fl5
      ,TRY_PARSE(fl6 AS FLOAT) fl6
      ,TRY_PARSE(fl7 AS FLOAT) fl7
      ,TRY_PARSE(fl8 AS FLOAT) fl8
      ,TRY_PARSE(fl9 AS FLOAT) fl9
      ,TRY_PARSE(fl10 AS FLOAT)fl10
INTO #tmp2
FROM @tbl

SELECT DATEDIFF(MILLISECOND,@d2,SYSUTCDATETIME());

https://stackoverflow.com/questions/54909108/

相关文章:

r - 计算 R 中非零值之间出现零的次数

oop - 如何在子模块 Fortran 中使用类型

java - 用于更新查询的 JPA @Query 注释(oracle sql 开发人员)——org

angular - 以 Angular 删除项目后无法刷新表

node.js - 为什么使用archiver.file模块压缩文件时出现 "queue close

office365 - 是否有 API 可以以编程方式制作 MS Office 365 Powerp

python-3.x - 如何从 faust 应用程序向 Websocket 发送数据

react-native - undefined 不是一个对象(评估'_reactNative.Te

python - 如何更改 django admin css 样式和字体?

reactjs - React Hooks,如何实现useHideOnScroll hook?