Questions tagged «sql»

结构化查询语言(SQL)是用于查询数据库的语言。问题应包括代码示例,表结构,示例数据以及正在使用的DBMS实现的标签(例如MySQL,PostgreSQL,Oracle,MS SQL Server,IBM DB2等)。如果您的问题仅涉及特定的DBMS(使用特定的扩展名/功能),请改用该DBMS的标签。使用SQL标记的问题的答案应使用ISO / IEC标准SQL。

8
如何从Hibernate Criteria API获取SQL(*不*用于记录)
有没有办法从Hibernate获取(待生成的)SQL Criteria? 理想情况下,我将具有以下内容: Criteria criteria = session.createCriteria(Operator.class); ... build up the criteria ... ... and then do something like ... String sql = criteria.toSql() (But this of course does not exist) 然后的想法是将SQL用作巨大的“ MINUS”查询的一部分(我需要找到2个相同模式之间的差异-结构相同,而不是数据相同-且Hibernate不支持MINUS) (顺便说一句,我知道我可以从日志文件中检查SQL)
73 java  sql  hibernate  criteria 




3
当触发器在表上时,不能与OUTPUT子句一起使用UPDATE
我正在执行UPDATEwithOUTPUT查询: UPDATE BatchReports SET IsProcessed = 1 OUTPUT inserted.BatchFileXml, inserted.ResponseFileXml, deleted.ProcessedDate WHERE BatchReports.BatchReportGUID = @someGuid 这句话很好。直到在表上定义触发器为止。然后我的UPDATE语句将得到错误334: 如果DML语句的目标表'BatchReports'包含不带INTO子句的OUTPUT子句,则该语句不能具有任何启用的触发器 现在,SQL Server团队在博客文章中解释了此问题-带有OUTPUT子句的UPDATE-触发器-和SQLMoreResults: 错误消息是不言自明的 他们还提供解决方案: 更改了应用程序以利用INTO子句 除了我无法在整个博客文章中做文章的正面或反面。 因此,我问一个问题:我应该UPDATE将其更改为什么才能起作用? 也可以看看 使用OUTPUT子句进行更新–触发器–和SQLMoreResults 为什么不允许MERGE语句的目标表具有已启用的规则? 语句包含一个OUTPUT子句,而没有INTO子句错误



12
“数据对于列而言太长”-为什么?
我已经编写了一个MySQL脚本来创建用于假设医院记录的数据库,并用数据填充它。其中一个表Department有一列名为Description的列,该列声明为varchar(200)类型。为说明执行INSERT命令时,出现错误: 错误1406:第1行的“描述”列的数据太长。 我要插入的所有字符串都少于150个字符。 这是声明: CREATE TABLE Department( ... Description varchar(200) ...); 这是插入命令: INSERT INTO Department VALUES (..., 'There is some text here',...), (..., 'There is some more text over here',...); 从表面上看,这应该是可行的。有人有见识吗?
73 mysql  sql 

5
外键可以引用同一表中的主键吗?
我只是认为答案是错误的,因为外键没有uniqueness属性。 但有些人说,可以在自助加入餐桌的情况下进行。我是新来的SQL。如果是真的,请解释如何以及为什么? Employee table | e_id | e_name | e_sala | d_id | |---- |------- |----- |--------| | 1 | Tom | 50K | A | | 2 | Billy | 15K | A | | 3 | Bucky | 15K | B | department table | d_id | d_name …

7
SQL Server在存储过程中默默地截断varchar
根据这个论坛的讨论,SQL Server(我使用的是2005,但我收集到的信息也适用于2000和2008)varchar,即使您直接使用INSERT实际上会导致错误。例如。如果我创建此表: CREATE TABLE testTable( [testStringField] [nvarchar](5) NOT NULL ) 然后当我执行以下命令时: INSERT INTO testTable(testStringField) VALUES(N'string which is too long') 我收到一个错误: String or binary data would be truncated. The statement has been terminated. 大。数据完整性得以保留,并且调用者知道这一点。现在让我们定义一个存储过程来插入它: CREATE PROCEDURE spTestTableInsert @testStringField [nvarchar](5) AS INSERT INTO testTable(testStringField) VALUES(@testStringField) GO 并执行它: EXEC spTestTableInsert @testStringField = N'string …

4
SQLSERVER中的ListAGG
我正在尝试在SQLServer中聚合“ STRING”字段。我想找到与Oracle中相同的函数LISTAGG。 您知道如何执行相同的功能或其他方法吗? 例如, Field A | Field B 1 | A 1 | B 2 | A 我希望这个查询的结果是 1 | AB 2 | A

15
在SQL中,UPDATE是否总是比DELETE + INSERT快?
假设我有一个包含以下字段的简单表: ID:int,自动递增(身份),主键 名称:varchar(50),唯一,具有唯一索引 标签:int 我从不使用ID字段进行查找,因为我的应用程序始终基于使用Name字段。 我需要不时更改Tag值。我正在使用以下简单的SQL代码: UPDATE Table SET Tag = XX WHERE Name = YY; 我想知道是否有人知道以上方法是否总是比以下方法快? DELETE FROM Table WHERE Name = YY; INSERT INTO Table (Name, Tag) VALUES (YY, XX); 再说一遍-我知道在第二个示例中ID已更改,但对我的应用程序来说并不重要。

2
在MySQL中将LIKE%..%与字段值一起使用
当我需要使用LIKE%..%语句中的字段中的值时,我陷入了一个微妙的SQL问题。 例: SELECT t1.Notes, t2.Name FROM Table1 t1, Table2 t2 WHERE t1.Notes LIKE '%t2.Name%' 这只是我脑海中的一个例子,显示了我需要做的事情(我知道这是行不通的)。我需要在LIKE%..%中使用t2.Name的值 我想这很简单;)
72 mysql  sql  sql-like 

8
如何在T-SQL中翻转位字段?
我正在尝试使用更新查询来翻转SQL Server中的位字段,也就是说,我想将所有0都变成1,反之亦然。什么是最优雅的解决方案? 在T-SQL中似乎没有按位NOT运算符(除非我遗漏了一些明显的东西),而且我无法找到执行更新的任何其他方式。
72 sql  sql-server  tsql 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.