首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cmd Isql减算子

Cmd Isql减算子
EN

Stack Overflow用户
提问于 2017-11-06 10:21:18
回答 1查看 221关注 0票数 0

我有一个火鸟数据库,我想做点什么。当我尝试这个命令时,它不起作用了。

代码语言:javascript
复制
echo DELETE FROM TXN WHERE SALESBEGIN < current_date - 2;" | isql -u sysdba -p masterkey localhost:C:\aaa.fdb

SALESBEGIN列的类型为DATETIME

但是当我删除"<“操作符时,它就开始工作了。我怎么才能修好它?这就是产出;

代码语言:javascript
复制
    C:\Program Files (x86)\Firebird\Firebird_2_0\bin>echo "DELETE FROM TXN 
    WHERE SALESBEGIN < current_date - 2;" | isql -u sysdba -p masterkey 
    localhost:C:\aaa.fdb
    Database:  localhost:C:\aaa.fdb, User: sysdba
    SQL> CON> Expected end of statement, encountered EOF
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-06 10:46:18

问题是<,它是命令行的重定向字符。您需要使用^来转义。

然而,根据本站的说法:

当使用管道时,表达式会被解析两次。首先,在执行管道之前的表达式时,第二次执行管道之后的表达式。因此,要转义第二个表达式中的任何字符,都需要双转义。

因此,您需要三个^字符来转义<符号:

代码语言:javascript
复制
echo DELETE FROM TXN WHERE SALESBEGIN ^^^< current_date - 2; | isql -u sysdba -p masterkey localhost:C:\aaa.fdb

在我的经验中,如果简单地将语句放入一个SQL脚本中,然后运行该脚本,那么类似于的事情就会容易得多。在isql中,将是isql -i delete.sql

如果仍然希望将所有内容保存在一个批处理文件中,可以执行以下操作:

代码语言:javascript
复制
echo DELETE FROM TXN WHERE SALESBEGIN ^< current_date - 2;> _temp_delete.sql 
isql -i _temp_delete.sql -u sysdba -p masterkey localhost:C:\aaa.fdb

您仍然需要在那里转义<,但只需要一次,因为|没有涉及到。

有关如何在批字符转义命令行或批处理脚本上转义特殊字符的更多信息,请参见。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47134629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档