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 表中的文本字符串中查找换行符?

    我试图在 SQL 表的列中查找换行符和回车符 但我不确定语法 I tried SELECT foo FROM test WHERE foo LIKE CHAR 10 尽管我知道该表应该返回结果 但我没有得到任何结果 我究竟做错了什么 SEL
  • 使用 ExecuteSqlCommand 调用存储过程(需要未提供的参数)

    我正在尝试使用 EF 调用存储过程context Database ExecuteSqlCommand因为我的参数之一是数据表 以下是该过程的参数 ALTER PROCEDURE mySchema myProc customerId INT
  • SSMS 对象资源管理器 - 连接到 Azure DB 时选择丢失的前 N ​​行

    我刚刚将 SSMS 升级到 2008 R2 我缺少从表中选择前 1000 行的选项 如下所示 我的看起来像这样 我知道如何更改显示的行数 但根本不存在这些选项 几年前我看到有人为此提交了一个错误 但没有解决方法 我不知道该怎么办 有任何想法
  • SQL 错误:字符串或二进制数据将被截断

    我正在一个名为 Telligent 的社区平台上进行集成 我正在使用名为 BlogML 的第 3 方插件将博客文章从 XML 文件 BlogML 格式 导入到我的本地 Telligent 站点中 Telligent 平台在其 SDK 中附带
  • 检查存储过程是否正在运行?

    是否可以检查 SQL Server 中当前是否有任何存储过程正在运行 我问过一次 查看 Sql Server 2000 如何找出当前正在运行哪些存储过程 https stackoverflow com questions 129086 sq
  • 良好的安全实践和自动身份范围管理是否相互排斥?

    我正在尝试使用自动身份范围管理 http msdn microsoft com en us library ms152543 aspx sectionToggle1 但是 确保我的用户可以在具有标识列的表中插入记录的唯一方法是使它们db o
  • 选择返回动态列

    我有两个表 标准和服务产品 一个标准可以有多个服务产品 每个标准可以有不同数量的与其关联的服务产品 我需要做的是编写一个视图 该视图将返回一些常见数据 然后在一行上列出服务产品 例如 Standard Id Description SO 1
  • SQL Server 代理服务的凭据无效

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我正在尝试以管理员身份在本地计算机上安装 SQL Server 2008 开发服务器 在安装过程中我收到此错误 知道如何解决它
  • 在 CASE 语句中使用 CAST 时出现数据转换错误

    运行以下命令时出现错误 将数据类型 nvarchar 转换为 float 时出错 declare completeCommand nvarchar max x paramVal nvarchar 100 paramName nvarchar
  • 将一行字段设置为其他 2 个字段的乘积

    我有一个这样的SQL表结构 Id A B C D 1 1 5 6 25 2 2 10 5 25 3 3 7 4 25 4 1 6 5 26 5 2 10 5 26 6 3 8 3 26 我想写一个脚本 它将更新所有B 和 C 列在行中A 3
  • 如何使用xampp连接sql服务器和php?

    我正在尝试使用 Xampp 将我的 SQL 服务器与 PHP 连接 我已经在ext文件夹中上传了dll文件 但无法连接它 我的PHP版本是7 2 6 上传的dll文件是 php pdo sqlsrv 72 ts dll php sqlsrv
  • SQL 层次结构 - 解析给定节点的所有祖先的完整路径

    我有一个由邻接列表描述的层次结构 不一定有单个根元素 但我确实有数据来识别层次结构中的叶 终端 项 所以 一个看起来像这样的层次结构 1 2 4 7 3 5 6 8 9 将通过表格来描述 就像这样 NOTE 我没有能力改变这种格式 id p
  • 制作 SQL Server 转储并将该转储导入另一个 SQL Server 的最佳(最简单)方法

    我想从一台服务器在 SQL Server 中实现数据库导出 转储 并将该转储导入到另一台 SQL Server 中 并且不一定使用相同的架构名称 例如 如果我准备了一个数据库 其中包含用于为新客户实施新数据库的所有数据集 则该数据库名为 D
  • SQL Server 2000 - 将查询分成 15 分钟的块

    我有一个连续时间数据集 我想使用 sql 将其分成 15 分钟的块 如果我能帮忙的话 我不想必须创建一个新表才能做到这一点 i e 时间 计数09 15 109 30 309 45 010 00 210 15 3 有谁知道我该怎么做 我认为
  • 除了连接之外还有其他方法可以提高性能吗?

    除了连接之外还有其他方法可以提高性能吗 编辑 gbn 相关连接或相关子查询与存在子句哪个更好 https stackoverflow com questions 3305891 为什么没有人提到嵌套循环连接 这不是 JOIN 的 替代 方式
  • DATEADD(day, -7, GETDATE()) - 是否考虑了时间?

    我正在通过 Amazon Redshift 在 Aginity 中编写 SQL 查询来提取过去 7 天的数据 这Date我调用的列是变量类型 DATE 输出示例如下 5 30 2017 0 00 当我调用下面的函数时 运行此查询在一天中的什
  • 从 Perl 脚本 DBI 关闭 MSSQL 服务器

    我正在写一个 perl 脚本 其中我必须关闭我的 mssql 服务器 做一些操作 然后我必须重新启动它 我知道一种方法是使用 netstat 来停止服务 但我不能使用它 所以我尝试安装 DBI 和 DBD ODBC 模块 我可以通过以下代码
  • SQL - 用 varchar 替换 is null 整数

    我正在尝试用新的列替换列varchar如果 select 语句中存在空值 则为字符串 personid ISNULL personid no person 我不想更新它 只是在查询结果中将值显示为 无人 但我收到一条错误消息 将 varch
  • 没有列名列表的tsql标识插入

    我要将一些数据从一个数据库转储到另一个数据库 我在用 set identity insert MyTable on GO INSERT INTO MyTable SELECT FROM sourceDB dbo MyTable GO set
  • MySQL CREATE TABLE 语句上的外键错误(错误:150)

    我觉得我已经在一对非常简单的创建表语句上尝试了一切可能的方法 类型匹配 我尝试使用 ENGINE InnoDB 等 但很困惑为什么我收到外键错误 我已经离开 SQL 一段时间了 所以这可能是一个简单的问题 mysql gt CREATE T

随机推荐

  • 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