sql - 需要知道&&在这个查询中的作用
问题描述
谁能提供以下查询的解释以及为什么&&
在此查询中有用法?这个查询的输出是什么?
SELECT
((TRUNC(SYSDATE - (&&days)) - TO_DATE('01-JAN-1970')) * 86400000) - 7200000 AS ts,
to_char(SYSDATE - (&&days), 'YYYYMMDD') || '_pt.txt' as pt_filenm from dual;
解决方案
它是关于 Oracle 的 SQL*Plus 替换变量的。
- 如果使用
&
,每次都会提示输入变量值 - 如果使用
&&
,则不会提示您使用已输入值的变量
这是一个例子。我正在设置默认日期格式并选择今天的日期:
SQL> alter session set nls_date_format = 'dd.mm.yyyy';
Session altered.
SQL> select trunc(sysdate) l_today from dual;
L_TODAY
----------
13.01.2019
现在,我们为什么在这里。首先,我只使用了一个&
,系统会提示两次输入我从今天的日期中减去的天数:
SQL> select trunc(sysdate - &days) l_one,
2 to_char(trunc(sysdate - &days), 'yyyy-mm-dd') l_two
3 from dual;
Enter value for days: 5
old 1: select trunc(sysdate - &days) l_one,
new 1: select trunc(sysdate - 5) l_one,
Enter value for days: 5
old 2: to_char(trunc(sysdate - &days), 'yyyy-mm-dd') l_two
new 2: to_char(trunc(sysdate - 5), 'yyyy-mm-dd') l_two
L_ONE L_TWO
---------- ----------
08.01.2019 2019-01-08
但是,如果我使用&&
,我只会被提示一次:
SQL> select trunc(sysdate - &&days) l_one,
2 to_char(trunc(sysdate - &&days), 'yyyy-mm-dd') l_two
3 from dual;
Enter value for days: 10
old 1: select trunc(sysdate - &&days) l_one,
new 1: select trunc(sysdate - 10) l_one,
old 2: to_char(trunc(sysdate - &&days), 'yyyy-mm-dd') l_two
new 2: to_char(trunc(sysdate - 10), 'yyyy-mm-dd') l_two
L_ONE L_TWO
---------- ----------
03.01.2019 2019-01-03
SQL>
因此,它可以为您节省一些时间并减少错误的可能性。
请注意 - 如果您&&
再次使用并运行相同的代码,则不会提示您输入变量的值 - 它将自动被重新使用:
SQL> /
old 1: select trunc(sysdate - &&days) l_one,
new 1: select trunc(sysdate - 10) l_one,
old 2: to_char(trunc(sysdate - &&days), 'yyyy-mm-dd') l_two
new 2: to_char(trunc(sysdate - 10), 'yyyy-mm-dd') l_two
L_ONE L_TWO
---------- ----------
03.01.2019 2019-01-03
如果要更改其值,请先取消定义:
SQL> undefine days
SQL> /
Enter value for days:
推荐阅读
- java - 使用自定义证书和密钥调用 RestTemplate API
- cryptography - 在将密码存储到数据库之前将盐添加到密码中
- python - 如何使用 Google Directory API 在 members.get() 调用中“includeDerivedMembership”?
- flutter - Riverpod - ref.onDispose 在创建对象时调用,而不是在释放时调用
- rust - Rust 中的红黑树,得到“预期的结构节点,找到可变引用”
- android - OnBackPress 片段
- python - 在 django 视图中理解 request.data
- python - 如何在 python3 kubernetes 客户端中加载 2 个(或更多)不同的 kubeconfig?
- python - 使用 BeautifulSoup 将 XML 中的数据提取到 csv 文件中
- c++ - 在 C++ 中检查 Palidrome,一些输出正在工作,一些则没有