SQL Server 对浮点字段“like”会产生不一致的结果

2023-12-03

我在用LIKE返回针对浮点字段的匹配数字结果。似乎一旦小数点左侧超过 4 位,则不会返回与我的小数点右侧搜索项匹配的值。下面是一个说明这种情况的示例:

CREATE TABLE number_like_test (
  num [FLOAT] NULL
)

INSERT INTO number_like_test (num) VALUES (1234.56)
INSERT INTO number_like_test (num) VALUES (3457.68)
INSERT INTO number_like_test (num) VALUES (13457.68)
INSERT INTO number_like_test (num) VALUES (1234.76)
INSERT INTO number_like_test (num) VALUES (23456.78)

SELECT num FROM number_like_test
WHERE num LIKE '%68%'

该查询不会返回值为 12357.68 的记录,但会返回值为 3457.68 的记录。此外,使用 78 而不是 68 运行查询不会返回 23456.78 记录,但使用 76 会返回 1234.76 记录。

那么问题来了:为什么数字越大会导致结果发生变化?如何更改查询以获得预期结果?


The like运算符需要一个字符串作为左侧值。根据文档,从float to varchar可以使用多种款式:

Value         Output
0 (default)   A maximum of 6 digits. Use in scientific notation, when appropriate.
1             Always 8 digits. Always use in scientific notation.
2             Always 16 digits. Always use in scientific notation.

默认样式适用于以下六位数字3457.68,但不适用于中的七位数字13457.68。要使用 16 位数字而不是 6 位数字,您可以使用convert并指定样式 2。样式 2 代表一个数字,例如3.457680000000000e+003。但这对于前两位数字不起作用,你会得到一个意想不到的结果+003免费指数。

最好的方法可能是从float to decimal。该转换允许您指定比例和精度。使用小数位数 20 和精度 10,浮点数表示为3457.6800000000:

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

SQL Server 对浮点字段“like”会产生不一致的结果 的相关文章

随机推荐

  • ajax 调用导致错误而不是成功

    在我的 ASP net mvc3 项目中 我使用 ajax 调用将 json 数据发送到控制器公司中的创建操作方法 但是当我调试ajax调用时 它总是以错误结果而不是成功结果结束 阿贾克斯调用 ajax url Company Create
  • 在javascript中移动对象元素位置

    我正在尝试找到一种将对象元素移动到特定位置的方法 例如 我有这个对象 element1 object element2 element3 我搜索将 element3 移动到第一个位置 element3 element1 element2 感
  • 从 PDO 准备好的语句中获取原始 SQL 查询字符串

    在准备好的语句上调用 PDOStatement execute 时 有没有办法让原始 SQL 字符串执行 出于调试目的 这将非常有用 我假设您的意思是您想要最终的 SQL 查询 并将参数值插入其中 我知道这对于调试很有用 但这不是准备好的语
  • 如何为等待函数调用添加超时

    向等待函数添加超时的最佳方法是什么 Example lets pretend this is in a library that I m using and I can t mess with the guts of this thing
  • 按平均值排名的箱线图

    我想显示多个变量的箱线图 并按列均值降序排列它们 就像在绩效分析包裹 我使用以下代码生成箱线图 zx lt replicate 5 rnorm 50 zx means lt colMeans zx na rm TRUE boxplot zx
  • django 和 facebook:代表用户执行第三方登录的 facebook web 应用程序的安全性和设计

    我正在编写一个 Facebook 画布 Web 应用程序 它执行对第三方网站的登录 使用 urllib 并代表用户执行操作 这意味着我有2个账户 用户在我的网络应用程序中拥有的帐户 通过 facebook 以及应用程序用来代表他们执行登录的
  • Android Parcelable 对象返回 Null

    我有产品类 我想将产品对象从一项活动传递到另一项活动 我已经这样实现了 public class Product implements Parcelable private double availableQuantity private
  • 函数修改列表

    def make Ab A b n len A Ab list A for index in range 0 n Ab index append b index 0 print A return Ab copy A 0 0 1 0 1 0
  • VSCode 片段触发器之前有文本吗?

    我想在 VSCode 中创建一个显示 PHP 箭头的代码片段 当我按 键然后按 TAB 键时 我想要 PHP 箭头 gt 这是我的代码片段 PHP arrow prefix body gt 0 description PHP Arrow g
  • R - 将数据帧转换为格式为 featureName:featureValue [重复] 的数据集

    这个问题在这里已经有答案了 原来我想要的格式叫 SVM 轻 并在这里描述http svmlight joachims org 我有一个数据框 我想将其转换为格式如下的文本文件 output featureIndex featureValue
  • 无法在子进程命令中使用 grep

    我的子进程命令有问题 我喜欢 grep 出与 Online 行匹配的行 def run command command p subprocess Popen command shell False stdout subprocess PIP
  • 如何处理 tokio::spawn 闭包需要“static”和“&self”?

    我无法理解如何编写封装在一个结构中的并发异步代码 我不确定如何准确解释这个问题 所以我会尝试用一个例子来解释 假设我有一个UdpServer结构 该结构有多个与其行为相关的方法 例如 handle datagram deserialize
  • 我们是否忽略补码的溢出

    我试图解决二进制补码内的溢出问题 例如说我试图去掉这两个二进制数 1111 1000 0100 010 111 001 000 我将第二个二进制数转换为两个补码等值 然后简单地将其相加 但我注意到它导致了 1 的溢出 我是否只是忽略溢出 或
  • 未找到 Python 模块,但该模块存在于文件夹中

    我正在尝试执行一个简单的 PY 文件 但收到以下错误 Traceback most recent call last File docker pull py line 8 in
  • Python 中可能存在混合缩进吗?

    看着this问题 我在我的机器上尝试了OP的代码 这里有一个文字版和截图 刚刚发生了什么 这应该是一个square功能 并且已正确实现 可以肯定的是 我复制粘贴了代码 然后再次尝试 好吧 我看不出这些版本之间有什么区别square 但只有后
  • 使用 clusplot 绘制以 0 为中心坐标的聚类

    我正在尝试绘制 GIS 坐标 特别是东向和北向相似的英国国家网格坐标 194630000 562220000 我可以使用 Cluster 库中的 clusplot 绘制这些图 clusplot df2 k means fit cluster
  • Javascript 函数生成具有非均匀概率的随机整数

    在javascript 或jquery 中 有一个简单的函数可以计算四个整数及其概率值 1 0 41 2 0 29 3 0 25 4 0 05 我怎样才能生成这四个数字并考虑到它们的概率 这个问题与这里发布的问题非常相似 生成具有概率的随机
  • php 5.3.1 的 phpinfo() 中未启用 mysql

    我在 Vista 上安装了 apache 2 2 14 php 5 3 1 和 mysql 5 1 43 两天以来我一直在尝试配置 php 以在 phpinfo 上启用 mysql 我修改了 php ini 使其具有 extension d
  • 惰性类属性装饰器

    我有一个 Django 模型 需要对自定义用户模型进行一些处理 我无法在类加载时使用该模型的类 因为类的加载顺序未知 所以我需要在运行时添加一些类属性 目前我将它们添加到 init or new like def new cls args
  • SQL Server 对浮点字段“like”会产生不一致的结果

    我在用LIKE返回针对浮点字段的匹配数字结果 似乎一旦小数点左侧超过 4 位 则不会返回与我的小数点右侧搜索项匹配的值 下面是一个说明这种情况的示例 CREATE TABLE number like test num FLOAT NULL