AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[syntax](dba)

Martin Hope
Jorge Bugal
Asked: 2022-08-27 10:47:42 +0800 CST

在扩展事件过滤器上使用方括号

  • 5

我想创建一个扩展的事件会话并使用like_i_sql_unicode_string运算符过滤短语[demo],用方括号。我开始了:

CREATE EVENT SESSION [demo] ON SERVER 
ADD EVENT sqlserver.sql_batch_completed(
    WHERE ([sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%[demo]%'))
)
ADD TARGET package0.ring_buffer
alter event session [demo] on server state=start

但这解释[demo]为类似正则表达式的语法上的字符组。所以如果我运行这个:

-- m

它将在扩展事件中被捕获。

我得到的最接近的是稍后过滤它,[sqlserver].[like_i_sql_unicode_string]([sqlserver].[sql_text],N'%demo%')在过滤器上使用,然后:

SELECT
n.ev.value('@timestamp','datetimeoffset') as [timestamp],
n.ev.value('data[@name="batch_text"][1]','varchar(max)')  as [batch_text]
FROM sys.dm_xe_session_targets xet
INNER JOIN sys.dm_xe_sessions xe ON xe.[address] = xet.event_session_address
cross apply (select CONVERT(XML, target_data) as xData ) as x
cross apply x.xData.nodes(N'RingBufferTarget/event') AS n(ev)
WHERE xe.name = N'demo' AND xet.target_name = N'ring_buffer'
and n.ev.value('data[@name="batch_text"][1]','varchar(max)') like '%\[demo\]%' escape '\'

但这仍然捕获了不必要的事件。

我试过'%[[]demo[]]%', '%{[}demo{]}%', '%\[demo\]%', '%$[demo$]%',但没有一个奏效。

sql-server syntax
  • 1 个回答
  • 164 Views
Martin Hope
JosephDoggie
Asked: 2021-08-06 07:53:09 +0800 CST

dbeaver 在不运行的情况下检查 sql 的语法

  • 0

使用 dbeaver 工具,我想在不实际运行脚本的情况下检查脚本是否存在语法错误。

目的:用于长插入查询(postgresql 语法,PostgreSQL 10.15),形式为:

INSERT INTO schema1.table1
(t1_id, fk1_id, fk_2_id, col1, col2)
  VALUES
           (nextval('schema1.sq_table1'),fk1_id_1,fk1_id_2,col1_val_1,col1_val_2),
            -- etc, literally thousands of lines

我无法在非生产区域中运行查询的生产版本,因为外键不同。

那么有没有办法只检查 SQL 的语法而不运行它。(它会在非生产区域引发外键约束错误,所以我(验证语法,但我想加倍确定。

根据下面的评论,我认为对于这里的情况(插入外键),外键违规错误会验证语法,但仍然存在一般情况:是否可以验证 SQL 的语法查询而不实际运行它?我认为可能有几种情况这会很有用。

postgresql syntax
  • 1 个回答
  • 1529 Views
Martin Hope
serefbilge
Asked: 2021-04-12 05:41:18 +0800 CST

Postgresql 脚本无法按我的预期工作

  • 0
DO $$
DECLARE companyNrs text[] = ARRAY(SELECT LPAD(companynr::text, 5, '0') FROM s_users);
        companyNr text;
BEGIN
  FOREACH companyNr IN ARRAY companyNrs
  LOOP        
    raise notice 'notice message %', companyNr;
  END LOOP;
END; $$

上面的 postgresql 脚本可以在 DataGrip 上完美运行。但是如果我在循环中添加一个 DECLARE 语句(如下所示),它会给出多个语法错误。这里有什么规则?

在此处输入图像描述

postgresql syntax
  • 1 个回答
  • 140 Views
Martin Hope
Nipun Thathsara
Asked: 2020-07-28 05:42:33 +0800 CST

获取通用 Oracle 错误消息“缺少右括号”

  • 0
CREATE TABLE IDN_ORG (
  ID VARCHAR2(255) NOT NULL,
  TENANT_ID INTEGER NOT NULL,
  NAME VARCHAR2(255) NOT NULL,
  CREATED_TIME TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  LAST_MODIFIED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  HAS_ATTRIBUTE CHAR(1) NOT NULL DEFAULT '1',
  STATUS CHAR(1) NOT NULL DEFAULT '1',
  PARENT_ID VARCHAR2(255),
  PRIMARY KEY (ID),
  CONSTRAINT TENANT_ORG_CONSTRAINT UNIQUE (NAME, TENANT_ID)
);


ORA-00907: missing right parenthesis 

我正在尝试执行上述脚本并收到上述错误。在阅读时,了解到这是 Oracle 抛出的更通用的错误。我试着改变了一些没有运气。有人可以看看我吗?(对 Oracle 来说非常新)

提前致谢。

oracle syntax
  • 1 个回答
  • 783 Views
Martin Hope
Lynn
Asked: 2020-07-16 07:51:43 +0800 CST

SQL CASE 查询优先级

  • 0

我正在做一个 pokemon sql 表并创建了一个名为 capacity_difference 的新列来确定表中每个 pokemon 的可收集性。但是,当我想使用 CASE 查询对它们进行分类时,结果只显示每个日志的 ELSE 条件。有人可以告诉我如何修复查询吗?

我的查询如下:

ALTER TABLE pokemon add capacity_difference INTEGER;

SELECT name, type_1, type_2, HP, (attack - defense) as capacity_difference from pokemon; 

SELECT name, type_1, type_2, HP, (attack - defense) as capacity_difference, 
  CASE 
    when capacity_difference > 90 then "collect asap"
    when  capacity_difference < 90 and capacity_difference > 50 then "good"
    when capacity_difference > 0 and capacity_difference < 50 then "okay"
    when capacity_difference > -10 and capacity_difference < 0 then "bad"
  ELSE "worse"
  END AS Collectability
FROM pokemon;
query syntax
  • 2 个回答
  • 51 Views
Martin Hope
Kevin Nathan
Asked: 2020-03-13 19:40:21 +0800 CST

带有“INTO OUTFILE”的 SQL 查询不适用于 MariaDB 10.4,但适用于 10.0

  • 2

我有一个在 MariaDB 10.0.35 上完美执行的 SQL 查询,但在 MariaDB 10.4.12 上因语法错误而失败。我试图联系他们,但他们告诉我查看论坛并比较从 10.0 到 10.4 的变更日志。我真的没有时间浏览几十个变更日志文件,试图找出有什么不同,特别是因为它们的文档似乎与我正在做的事情兼容。这是查询:

(SELECT 'Name','Address1','Address2', 'City', 'State', 'Zip', 'Phone', 'SSN', 'Credit Card', 'County', 'Comment', 'Company') 
UNION (
SELECT name, address1, address2, city, state, zip, phone, ssn, credit_card, county, comment, company 
FROM testcust  
WHERE type = '0'  
ORDER BY name 
INTO OUTFILE '/tmp/sellers.csv' 
FIELDS ENCLOSED BY '"' 
TERMINATED BY ',' 
LINES TERMINATED BY '\r\n'
);

我什至尝试重新安排它以将 INTO OUTFILE 子句放在 FROM 之前(如示例中所示):

(SELECT 'Name','Address1','Address2', 'City', 'State', 'Zip', 'Phone', 'SSN', 'Credit Card', 'County', 'Comment', 'Company') 
UNION (
SELECT name, address1, address2, city, state, zip, phone, ssn, credit_card, county, comment, company 
INTO OUTFILE '/tmp/allcustomers.csv' 
FIELDS ENCLOSED BY '"' 
TERMINATED BY ',' 
LINES TERMINATED BY '\r\n'
FROM testcust  
ORDER BY name 
);

但这没关系。(顺便说一下,这两个版本都适用于 10.0。)

这是来自 MariaDB 10.4.12 的错误:

ERROR 1064 (42000):您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在“INTO OUTFILE '/tmp/allcustomers.csv' 附近使用的正确语法”

这是 MariaDB 的“INTO OUTFILE”文档: MariaDB 文档页面 ,其中有以下示例:

SELECT customer_id, firstname, surname INTO OUTFILE '/exportdata/customers.txt'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\n'
  FROM customers;

我在 /etc/my.cnf.d/secure_file_priv.cnf 中禁用了secure_file_priv:

[server]
# secure_file_priv = /var/lib/mysql-files
secure_file_priv = ""

我找不到为任何想要导入 SQL 文件以使用上述查询进行测试的人附加 SQL 文件的方法,但很乐意根据请求发送它(除非我只是错过了如何附加文件)。

我对此完全不知所措,似乎找不到他们文档的不同版本来查看是否真的存在语法差异——我只能假设他们的在线文档是最新版本的。

我真的很感激任何人能够给予我的任何启示......

syntax mariadb-10.4
  • 1 个回答
  • 2963 Views
Martin Hope
Paul Draper
Asked: 2020-01-23 21:39:37 +0800 CST

什么是 `TABLE example` 语法?

  • 6

在 PostgreSQL 中,我一直在使用类似的语法

TABLE example1
UNION ALL
TABLE example2

我理解这相当于

SELECT * FROM example1
UNION ALL
SELECT * FROM example2

但是一位同事问我这个问题,我找不到任何关于这种语法的 PostgreSQL 文档。(“TABLE”不是一个有用的搜索短语。)我在哪里可以找到有关它的文档?

它是 ANSI SQL 标准吗?


编辑:它目前显然甚至混淆了 StackExchanges 的语法突出显示。

postgresql syntax
  • 2 个回答
  • 494 Views
Martin Hope
Konstantin Pelepelin
Asked: 2019-10-12 13:03:26 +0800 CST

内联复合表达式的内联扩展

  • 0

我想要这样的东西:

SELECT 1, (CASE WHEN TRUE THEN (2, 3) ELSE (4, 5) END).*;

...希望得到1 | 2 | 3。但在 PostgreSQL 11 中,这个查询抛出:

错误:记录类型尚未注册

没有*它显然会返回1 | (2,3)。

这可能吗?

postgresql syntax
  • 1 个回答
  • 107 Views
Martin Hope
Justin Adams
Asked: 2019-03-05 09:52:07 +0800 CST

Postgres 10.0 更新插入语法错误不确定要用谷歌搜索什么

  • 1

Postgres 10.0

桌子:

pcr=> \d tableFindOld
                               Table "public.tablefindold"
  Column  |            Type             | Collation | Nullable |         Default
----------+-----------------------------+-----------+----------+-------------------------
 hostname | character varying(16)       |           | not null |
 lastmiss | timestamp without time zone |           |          |
 lastfind | timestamp without time zone |           |          |
 uname    | character varying(64)       |           |          | NULL::character varying
Indexes:
    "tablefindold_pkey" PRIMARY KEY, btree (hostname)

更新声明:

INSERT INTO tableFindOld(hostname, lastMiss, lastFind, uname) 
VALUES('pcname', DEFAULT, '2019-03-04 11:38:04', 'billy') 
ON CONFLICT (tableFindOld.hostname) 
    DO UPDATE SET lastFind='2019-03-04 11:38:04', uname='billy' 
    WHERE tableFindOld.hostname='pcname';

错误:

ERROR:  syntax error at or near ")"
LINE 1: ...8:04', 'billy') ON CONFLICT (tableFindOld.hostname) DO UPDAT...
                                                             ^

我试过谷歌搜索无济于事。几个问题:

  • 这里的具体错误是什么?(真的问为什么我会收到这个错误?)
  • 在 upsert 语句中,对于列冲突条件(在本例中是主键冲突),列名是否应该包含在括号中?我在这方面看到了一些不一致的信息。
  • 在带有更新的 upsert 语句中,我们是否应该包含DO关键字?也看到了关于此的不一致信息。

此外,我在DEFAULT NULL除主键之外的所有列上创建了表,所以我不确定为什么这没有反映在描述中。

在此先感谢您的帮助。

编辑:这是我的表创建代码:

CREATE TABLE tableFindOld(
    hostname VARCHAR(16) PRIMARY KEY,
    lastMiss TIMESTAMP DEFAULT NULL,
    lastFind TIMESTAMP DEFAULT NULL,
    uname VARCHAR(64) DEFAULT NULL
);

解决方案:感谢 McNets 的回答。作为参考,工作声明:

INSERT INTO tableFindOld(hostname, lastMiss, lastFind, uname) VALUES('pcname', DEFAULT, '2019-03-04 12:30:04', 'billy') ON CONFLICT (hostname) DO UPDATE SET lastFind='2019-03-04 12:30:04', uname='billy' WHERE tableFindOld.hostname='pcname';
postgresql syntax
  • 1 个回答
  • 1352 Views
Martin Hope
cal
Asked: 2018-08-16 08:13:13 +0800 CST

@ 在查询表达式中表示什么?

  • 3

@符号在此sql表达式中表示什么?

update some_table set some_number=(@some_number+1) where some_id=1;

它似乎返回与以下相同的结果:

update some_table set some_number=some_number+1 where some_id=1;
postgresql syntax
  • 1 个回答
  • 56 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve