【问题标题】:What does "variable = ." (variable = dot) mean in Oracle SQL/SAS?“变量=。”是什么意思? (变量 = 点)在 Oracle SQL/SAS 中的意思是什么?
【发布时间】:2015-06-27 03:20:48
【问题描述】:

我正在将 SAS 脚本转换为 Python,其中 SAS 脚本与 Oracle 数据库交互,而 Python 将与 PostgreSQL 数据库交互。在 SAS 代码中,我找到了这样的语句:

proc sql noprint;
create table table_name as
  select distinct wtn
    from another_table
   where account = .
;

“where account = .”是什么意思?在甲骨文中是什么意思?或者它不是 Oracle SQL 的东西,而是 SAS 的东西?还是在所有形式的 SQL 中都可用?

此外,如果它是 SAS 和/或 Oracle 特定的,我会在 PostgreSQL 中使用什么来代替它?

【问题讨论】:

  • 这是一个 SAS SQL 的东西。在其他人中使用 account=whatevervalue。
  • @vkp 点未在某处定义。我怎么知道要将帐户与什么进行比较?
  • 代码在sas中是否按原样运行?
  • @vkp 我无法测试它,因为我刚刚收到了脚本并被告知要转换它。我假设它正在运行,并且至少在过去 8 年左右的时间里一直在运行。
  • 点在 SAS 中缺少数字(因此实际上与 NULL 相同)。从你最近的几个问题中——也许你应该去阅读一些关于基本 SAS 的论文?您可以下载 SAS University Edition,它在 VM 中运行,让您实际运行 SAS 并进行测试。

标签: sql oracle postgresql sas


【解决方案1】:

在 SAS 中,数值变量(包括日期变量)的缺失值显示为句点。在对数值字段进行排序时,SAS 将数值空值视为等于“最小可能数”(本质上是负无穷大)。

SAS 数据集将有一个句点作为缺失数据的值。当您使用 proc export 将数据导出为 CSV 时,我相信它会创建一个空值。要真正回答您的问题,您需要知道从 sasdata 集到当前数据库的 ETL 是如何完成的。

我希望您的数据已针对您的数据库进行了标准化。因此,我认为您应该使用“IS NULL”代替“varname = '。” ” 。见下文:

create table table_name as
select distinct wtn
from another_table
  where account is NULL
;

此外,字符变量的 SAS 缺失值显示为空白。字符的缺失值设置如下:if name="none" then name=' '。

【讨论】:

    猜你喜欢
    • 2011-08-30
    • 1970-01-01
    • 2012-03-05
    • 2022-01-25
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多