SQL Server 2008 中的 try_parse

2024-01-05

在 SQL Server 2008 中获得相同输出的最简单方法是什么?

SQL Server 2012:

select
    try_parse(Isnull('123.66',0) as float) as a ,
    try_parse(Isnull('.',0) as float) as b 

Result

a       b
------------
123.66  NULL

SQL Server 2008: ?


TRY_PARSE做两件事 - 使用特定区域性解析文本并在转换失败时返回 NULL。在 SQL Server 2008 中,您可以使用以下命令来模拟此功能的一部分:ISNUMERIC函数,如此处显示 https://stackoverflow.com/questions/2000045/tsql-cast-string-to-integer-or-return-default-value:

select 
    CASE
        WHEN ISNUMERIC(@input)=1 and LEFT(@input,1) LIKE'[0-9]' THEN 
            CAST(@input as float)  
        ELSE 
            NULL 
    END,

ISNUMERIC即使对于.或“.5”,导致转换失败。第二次检查涵盖了这一点LEFT(@input,1) LIKE'[0-9]'

您可以创建一个标量函数,这样您就不必每次要转换值时都键入所有这些内容:

CREATE FUNCTION try_parse_float(@input varchar(20)) 
returns float
AS
begin
    declare @result float;
    select @result=CASE
                       WHEN ISNUMERIC(@input)=1 and LEFT(@input,1) LIKE'[0-9]' 
                           THEN CAST(@input as float)  
                       ELSE NULL 
                    END;
    return @result;
end

所以你可以写

SELECT dbo.try_parse_float('123,4'), try_parse_float('.')

-----   ----
123.4   NULL

EDIT

最安全、最快的选择就是避免将数值作为文本存储在数据库中,而是确保在加载期间解析数据。例如.NET和OLEDB提供者可以解析"123-" to -123而 T-SQL 则不能。

在加载过程中处理自定义格式也更容易,例如使用float.TryParseExact在将表单数据保存到数据库之前调用,或者使用 SSIS ETL 脚本中的 C# 脚本组件调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 2008 中的 try_parse 的相关文章

  • 在 Sql Server 中转换为日期时间 MM/dd/yyyy HH:mm:ss

    如何将给定的日期格式转换为MM dd yyyy HH mm ss 我尝试了下面这个但没有实现 谁能帮我 SELECT CONVERT VARCHAR 20 GETDATE 120 SQL Server 2005及以上版本支持 SELECT
  • 有没有办法以编程方式轻松更改多个 SSIS 包上的服务器名称?

    作为发布周期的一部分 我们正在创建多个 SSIS 包来迁移大型数据库 我们最终可能会得到大约 5 10 个 SSIS 包 由于我们有 4 个环境 开发 QA 登台 生产等 是否有一种有效的方法可以在每个 SSIS 包经历不同的服务器环境时更
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • 将表数据从一个 SQL Server 导出到另一台 SQL Server

    我有两个 SQL Server 都是 2005 版本 我想将多个表从一个表迁移到另一个表 我努力了 在源服务器上 我右键单击数据库 选择Tasks Generate scripts 问题是在下面Table View options没有Scr
  • 如何跨多个表强制执行 CHECK 约束

    我有一个在 Microsoft SQL Server 2012 Express 中记录奶牛繁殖信息的数据库 显然 一头牛只有在出生后才能配种 并且在其一生中可能会配种多次 我需要在我的数据库中强制执行这些约束 我目前已经根据下图安排了一个架
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • 如何从 SQL Server 存储过程返回值并在 Access VBA 中使用它们

    我已经在 SQL Server 中设置了一个运行良好的存储过程 我现在可以从 VBA 调用它 但想返回一个值以了解是否存在任何错误等 我的 SP 中的最后一个参数设置为 OUTPUT DataSetID int 0 Destination
  • 插入后,数据库中仅插入“字符串”的一个字符

    Below is my table screenshot Data after insertion C 代码 SqlConnection con new SqlConnection connectionsession Con con Ope
  • 使用包含和不包含的 Linq 查询

    我正在尝试从数据库中获取记录 它应该 getrecords 其中名称包含 searchKey 并且名称不在 exceptTerms 数组中 并以逗号分隔 我怎样才能在 Linq 中做到这一点 Rows from u in DB Client
  • 同时使用 GUID 和自动递增整数

    我一直在研究使用 GUID 作为数据库中的主键 到目前为止 利似乎大于弊 然而 我发现 GUID 可能不是我想要的 在我的应用程序中 用户应该能够根据用户友好的 ID 来识别对象 因此 例如 如果他们想要获取特定产品而不输入全名 则可以使用
  • 使用 CLR 返回表

    我想编写一个 CLR 过程 它接受一个文本并返回一个包含该文本中所有单词的表 但我不知道如何返回一张桌子 你能告诉我吗 Microsoft SqlServer Server SqlFunction public static WhatTyp
  • 无法删除 Access 中 SQL 表上的注册表

    我有一个在 Access 应用程序中链接的 SQL Server 表 如果我尝试使用删除查询删除记录 则没有问题 但是 如果我尝试直接在表中删除记录或在数据表模式下使用选择查询 Access 不允许我删除记录并引发以下警告 Microsof
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • SQL 2008全文索引填充延迟

    我的经理说 在基础表数据更改后 可能需要一段时间才能更新全文搜索索引 例如 如果我有一张桌子Products有一个柱子Description我更新了该描述 然后我可能需要一些时间才能搜索该新描述 真的吗 这需要多长时间 SQL 2008 对
  • SQL返回两行之间的秒差

    这个问题与SQL Server有关 我有下表 id size batch code product code additiontime 1 91 55555 BigD Red 2017 05 15 13 00 00 2 91 55555 B
  • 同一索引操作上的不同估计行?

    简介和背景 我必须优化一个简单的查询 下面的示例 重写几次后 我认识到同一个索引操作的估计行数会根据查询的编写方式而有所不同 最初 该查询执行了聚集索引扫描 因为生产中的表包含二进制列 该表相当大 大约 100 GB 并且全表扫描执行起来需
  • 如何从 SQL Server 2008 查询结果中删除“NULL”

    我有一个包含 59 列和超过 17K 行的表 很多行都有NULL在某些列中 我想删除NULL以便查询返回空白 而不是NULL 我可以运行一些更新功能来替换所有NULL with 使用 SQL Server 2008R2 Management
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 通知设置的数据库设计

    用户可以打开或关闭 他的通知设置 帐户 用于通知 例如 更改帐户资料信息 收到新消息等 通知可以通过电子邮件或手机 推送或短信 发送 用户可以只有 1 封电子邮件和多个手机设备 有什么方法可以改进以下数据库设计或者您会采取不同的方式吗 让我
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么

随机推荐

  • FreeLibraryAndExitThread 在卸载注入的 DLL 时导致程序崩溃

    我正在编写一个 DLL 它被注入到游戏中 以便进行一些逆向工程 有一段时间 当我对程序进行更改时 我能够成功地注入 弹出和重新注入 我在用着FreeLibraryAndExitThread卸载 将 XInput 添加到程序中以便我可以捕获用
  • Java练习:使用递归方法打印星号三角形及其倒三角形

    我需要打印一个三角形及其倒三角形 站在其尖端 我设法只打印出三角形 我知道我可以轻松使用 for 循环 但我想知道如何使用递归 就我而言 我不知道如何打印三角形和倒三角形 谢谢 Example desired output My code
  • ASP.NET MVC - 视图模型、域模型和数据模型[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用样本函数将数据拆分为训练/测试集

    我刚刚开始使用 R 我不确定如何将我的数据集与以下示例代码合并 sample x size replace FALSE prob NULL 我有一个数据集 需要将其放入训练集 75 和测试集 25 中 我不确定应该在 x 和 size 中输
  • 防止方法上的 JIT 内联

    我的情况比较特殊 我一直在开发一个用于发送电子邮件的开源库 在这个库中 我需要一种可靠的方法来获取调用方法 我已经用一个完成了这个StackTrace通过分析StackFrame里面的物体 这在关闭优化的调试模式项目中没有问题 当我切换到打
  • 在 Struts 2 中使用 UrlRewrite 设置参数变量

    我在用着塔基网址重写 http www tuckey org urlrewrite 与 Struts2 应用程序结合使用 我正在尝试转换以下网址 promotions abcdef 987 to dopromotions detail传递变
  • Java中如何检查String值是否为Boolean类型?

    我对此做了一些搜索 但找不到任何有用的东西 要点是 如果 String 值是 true 或 false 则返回值应该是 true 在所有其他值中它都应该是假的 我尝试过这些 String value false System out pri
  • 如何使用正则表达式(Regex)从字符串中获取电话号码?

    我想要正则表达式 它通过忽略空格 加号 括号和破折号来找出连续的最大 12 位数字 例如 Primary contact number 91 98333332343 call me on this My number is 91 983 3
  • 如何使两个相关但独立的系统保持同步?

    我当前的开发项目有两个方面 首先 有一个公共网站 外部用户可以出于各种目的提交和更新信息 然后 此信息将保存到托管设施的本地 SQL Server 中 第二个方面是内部应用程序 员工使用它来管理这些相同的记录 概念上 并提供状态更新 批准等
  • Safari 中的 Ogg 音频

    如何在 safari 中播放 ogg 音频文件而不将其转换为 mp3 我用媒体元素 js http www mediaelementjs com 库到 flash 后备 它在 chrome 和 firefox 中工作正常 可以播放 mp3
  • 如何使这个 R 包的输出静音?

    我正在玩一点LowRankQP 在R中打包 甚至设置verbose FALSE仍然产生大量输出 参见下面的示例 输出来自代码的编译部分 R 中有没有一种方法 包装函数 来调用LowRankQP 绝对安静 即不在上面打印任何内容 screen
  • 如何在 Laravel 查询的 WHERE 子句中使用正则表达式?

    我有一个名为 Shows 的表 有一个列 show date 我想检索 show date 是今天日期的节目 以下是我的查询 s DB table shows gt get a DB table shows gt select show d
  • 如何使用selenium python获取伪元素的css值?

    我的页面有 html div class bar title before div 选择 Chrome 或 Firefox before我可以在 样式 选项卡上看到 css SomeTitle bar before content requ
  • 预期换行符为“LF”,但发现换行符为“CRLF”样式

    在 gulp 项目中使用 eslint 时 我遇到了这样的错误问题 Expected linebreaks to be LF but found CRLF linebreak style我正在使用 Windows 环境运行 gulp 下面给
  • “干净代码”的定义[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 罗伯特 C 马丁在他的书的第一章中提出 干净的代码 https rads stackoverflow com amzn click com 01
  • 作曲家自签名证书

    更新到最新版本的作曲家 多年来 我们一直在 http 上托管我们的包存储库 没有出现任何问题 但现在 Composer 说它需要通过 https 连接 我可以通过放置来解决这个问题 secure http false 在我的composer
  • 异步串行通信:为什么 ReadFile() 在 OVERLAPPED 结构中设置事件?

    我利用各种来源拼凑了一些 多线程 代码来从串行端口读取和写入 一切都工作正常 除了从串行端口读取的线程中的循环无意中进行了繁忙的等待 本质上重复发生的是 事件 在读取循环之外创建 被重置 并且其句柄用作 OVERLAPPED 结构中的 hE
  • 运行 ReactJS/TailwindCSS/Heroku 时出错:React Refresh 运行时不应包含在生产包中

    使用 TailwindCSS 在 ReactJS 中处理 webfolio 部署到Heroku 构建成功 但是打开App总是报错 错误 React Refresh 运行时不应包含在生产包中 除了不将 tailwindcss 配置为可部署之外
  • Facebook 的“单点登录”可以在移动网络应用程序中实现吗?

    这是我在这里第一次发帖 尽管我已经使用这个网站作为参考相当长一段时间了 几天来 我一直在尝试寻找或梦想一种在移动网络应用程序 不是本机 iOS 或 Android 应用程序 中使用 Facebook 的 单点登录 的方法 以自动将用户登录到
  • SQL Server 2008 中的 try_parse

    在 SQL Server 2008 中获得相同输出的最简单方法是什么 SQL Server 2012 select try parse Isnull 123 66 0 as float as a try parse Isnull 0 as