【发布时间】:2014-08-19 07:27:03
【问题描述】:
作为 SQL 查询的一部分,我有以下内容
iif(rapport_nc, 35, 0) AS rapport
如果第一条记录返回 0(就是这种情况),每条返回 35 的记录都会出现数字溢出错误。
如何在不“按摩”数据的情况下解决这个问题?
【问题讨论】:
标签: foxpro visual-foxpro
作为 SQL 查询的一部分,我有以下内容
iif(rapport_nc, 35, 0) AS rapport
如果第一条记录返回 0(就是这种情况),每条返回 35 的记录都会出现数字溢出错误。
如何在不“按摩”数据的情况下解决这个问题?
【问题讨论】:
标签: foxpro visual-foxpro
使用 CAST() 包装具有可变返回长度的表达式是一种很好的做法。例如:
CAST(IIF(rapport_nc, 35, 0) AS I)
【讨论】:
Bernard(以及其他 VFP 新手)。 VFP 查询实际上运行了两次查询,一次是针对第一条记录,以确认最终的列类型和大小,然后针对所有记录的实际查询。因此,作为您的 IIF(),如果表的第一条记录是 0 的结果,那么它将最终列大小设置为 1 位,因此失败。因此,您的 IIF(condition, 35, 00) 解决方案现在将两个可能的答案都识别为 2 位数字。如果您修剪字符串,例如修剪名称、地址或类似内容,并且通常使用 PADR(somefield, finalLengthWanted) 解析,也会发生这种情况。
【讨论】:
我曾想过尝试“IIF(rapport_nc,35,00) AS rapport”,它奏效了。抱歉,添麻烦了。 /b
【讨论】: