gpt4 book ai didi

sql-server-2008-r2 - 字母数字值之间的 SQL

转载 作者:行者123 更新时间:2023-12-04 07:54:23 25 4
gpt4 key购买 nike

我的数据库表中有一个字母数字列。对于我的过滤器,我使用 between 来获取结果过滤器值。一切正常。但是,在某些情况下,它会错过过滤中的一些数据。这是我的 sample ,

样本数据

ACQPO14
002421
ACQPO8
ACQPO14
ACQPO19
DUMMY0001

SQL查询
SELECT po.No,
po.PoS
FROM PoDetails pod
INNER JOIN Pors po ON po.Id=PoD.PoId
WHERE po.No BETWEEN 'ACQPO1' AND 'ACQPO20'

对于上述示例。查询仅返回 ACQPO14 ACQPO19 不是 ACQPO8 .

对此问题的任何帮助将不胜感激。

谢谢

最佳答案

这是有道理的,因为它只是文本。
1来之前 8因此,在文本中排序(从左到右),db 将忽略 ACQPO14 的最后一位数字将其与 ACQPO8 进行比较.所以ACQPO1 ( 4 被移除) 出现在 ACQPO8 之前和 ACQPO2 ( 0 被移除) 出现在 ACQPO8 之前以及。所以它被 between 过滤掉了.

解决此问题的唯一方法是通过拆分来解析列。例如:如果 ACQPO是一个固定长度的前缀,您可以使用一些 DBMS 函数(您尚未指定任何函数)来修剪该部分并将其余部分转换为数字格式。然后按该数字余数进行比较/过滤。

关于sql-server-2008-r2 - 字母数字值之间的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com