仅返回MS Access查询中的整数

时间:2015-11-20 14:23:05

标签: sql ms-access

我知道这可能是一个简单的问题,但对于我的生活,我无法让它发挥作用。

我有以下查询:

SELECT 
[1_Data_Set].EAN_CODE, 
[1_Data_Set].CPFUSER_CONSUMER_UNIT_DESCRIPTION, 
[1_Data_Set].CASE_WIDTH, 
[1_Data_Set].CASE_HEIGHT, 
[1_Data_Set].CASE_LENGTH, 
[1_Data_Set].CPFUSER_CONSUMER_UNIT_INTRODUCED_DATE, 
[1_Data_Set].WAREHOUSED_IND INTO DEFAULTS
FROM 1_Data_Set

WHERE 

([1_Data_Set].CASE_WIDTH =[1_Data_Set].CASE_HEIGHT  
AND
[1_Data_Set].CASE_HEIGHT  = [1_Data_Set].CASE_LENGTH
AND
[1_Data_Set].CASE_LENGTH = [1_Data_Set].CASE_WIDTH);

我想返回宽度,长度和高度都匹配的值(可能比我上面输入的更合乎逻辑的方式)

只有整数,我不能使用INT()命令来显示整数,我只想重新编号整数

目前正在返回示例:

EAN       Height      Width     Length
58554       10          10        10
85965       11.1        11.1      11.1

必需:

EAN       Height      Width     Length
58554       10          10        10

3 个答案:

答案 0 :(得分:2)

也许这就是你想要的:

select *
from l_data_set
where height = round(height, 0) and width = round(width, 0) and
      length = round(length, 0) and
      height = width and width = length;
由于存储浮点数的方式,

round()int更安全。

答案 1 :(得分:1)

检查基数是否等于基数的INT

SELECT  *
FROM    1_Data_Set
WHERE   CASE_WIDTH = INT(CASE_WIDTH) AND
        CASE_WIDTH = CASE_HEIGHT AND
        CASE_HEIGHT = CASE_LENGTH

在我发布之前 - 与Jason Boyds的答案基本相同。即只是先检查数字是否为整数。

答案 2 :(得分:0)

如果您在Access中执行查询,那么我认为这将满足您的需求:

SELECT 
    [1_Data_Set].EAN_CODE, 
    [1_Data_Set].CPFUSER_CONSUMER_UNIT_DESCRIPTION, 
    [1_Data_Set].CASE_WIDTH, 
    [1_Data_Set].CASE_HEIGHT, 
    [1_Data_Set].CASE_LENGTH, 
    [1_Data_Set].CPFUSER_CONSUMER_UNIT_INTRODUCED_DATE, 
    [1_Data_Set].WAREHOUSED_IND INTO DEFAULTS
FROM 1_Data_Set
WHERE 
    INT(CASE_WIDTH) - CASE_WIDTH = 0
    AND [1_Data_Set].CASE_WIDTH =[1_Data_Set].CASE_HEIGHT  
    AND [1_Data_Set].CASE_HEIGHT  = [1_Data_Set].CASE_LENGTH

第三次平等检查 - [1_Data_Set].CASE_LENGTH = [1_Data_Set].CASE_WIDTH - 由于平等的传递属性而没有必要。

如果您在SQL端执行查询,那么您可以执行CASE_WIDTH % 1 = 0而不是INT(CASE_WIDTH) - CASE_WIDTH = 0