小编Dav*_*ber的帖子

确定两个日期范围是否重叠

给定两个日期范围,确定两个日期范围是否重叠的最简单或最有效的方法是什么?

举个例子,假设我们有通过日期时间变量表示的范围StartDate1EndDate1 StartDate2EndDate2.

language-agnostic math datetime

1180
推荐指数
16
解决办法
38万
查看次数

一个查询中来自同一表的多个COUNT SELECTS

对于某些人来说,它可能看起来很简单,但我根本无法得到它.
我一遍又一遍地从同一个表中有多个MS-SQL SELECT查询:

SELECT count(Page) as tAEC
FROM someTable
WHERE Page LIKE '%AEC%'
Run Code Online (Sandbox Code Playgroud)

下一个

SELECT count(Page) as tTOL
FROM someTable
WHERE Page LIKE '%TOL%'
Run Code Online (Sandbox Code Playgroud)

等等...

什么是更有效的方式来编写此查询.我用Google搜索了一堆类似的问题,但我无法让它们中的任何一个起作用.所以任何帮助都非常感谢.

sql-server select

24
推荐指数
2
解决办法
4万
查看次数

多列上的FULLTEXT INDEXES如何工作?

在3列上添加FULLTEXT INDEX时,是否在3列上添加1个单个索引,还是添加3个单独的索引?

我问这个,因为此刻我正在使用这样的FULLTEXT:

ALTER TABLE myTable ADD FULLTEXT all3colsIndex (col1,col2,col3);
SELECT * FROM myTable WHERE MATCH (col1, col2, col3) AGAINST ('word');
Run Code Online (Sandbox Code Playgroud)

我刚刚在我的搜索界面中添加了一个用户选项,用户可以从搜索中删除其中一列.所以我能够在不丢失索引的情况下做到这一点,我只使用3列中的2列:

ALTER TABLE myTable ADD FULLTEXT all3colsIndex (col1,col2,col3);
If (UserOptionRemoveCol == "selected") {
    SELECT * FROM myTable WHERE MATCH (col1, col2) AGAINST ('word');
} else {
    SELECT * FROM myTable WHERE MATCH (col1, col2, col3) AGAINST ('word');
}
Run Code Online (Sandbox Code Playgroud)

或者我是否必须在两列以及三列上创建新的FULLTEXT索引?

ALTER TABLE myTable ADD FULLTEXT all3colsIndex (col1,col2,col3);
ALTER TABLE myTable ADD FULLTEXT 2colsIndex (col1,col2);
Run Code Online (Sandbox Code Playgroud)

mysql sql database indexing

16
推荐指数
3
解决办法
2万
查看次数

在Oracle中分组vs分区

我正在编写一个查询来从Oracle仓库中获取记录.它是一个简单的Select Query,在几个表上有连接,我有很少的列要聚合.因此,我最终在其余列上使用Groupby.

假设我正在挑选大约10列,其中5列是聚合列.所以我需要在其他5列上分组.我甚至可以通过不执行Groupby并在我想要派生的每个聚合列上使用over(paritition by)子句来实现相同目的.

我不确定哪个更适合仓库或一般.

sql oracle data-warehouse analytic-functions

8
推荐指数
2
解决办法
3万
查看次数

UPDLOCK和HOLDLOCK查询没有创建预期的锁

我有下表:

CREATE TABLE [dbo].[table1](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [name] [nvarchar](50) NULL,
 CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

我正在学习SQL锁是如何工作的,我正在尝试测试一种情况,我想锁定一行不被读取和更新.从这篇文章开始,这个任务的一些灵感,这是我试图解决的原始问题.

当我运行这个T-SQL时:

BEGIN TRANSACTION

SELECT * FROM dbo.table1 WITH (UPDLOCK, HOLDLOCK)
WAITFOR DELAY '00:00:15'

COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)

我希望在表上放置一个独占锁,特别是对于行(如果我在主键上有一个WHERE语句)

但运行此查询,我可以看到GRANTed LOCK用于请求模式IX.

SELECT * FROM sys.dm_tran_locks WHERE resource_database_id = DB_ID() AND resource_associated_entity_id = OBJECT_ID(N'dbo.table1');
Run Code Online (Sandbox Code Playgroud)

此外,在单独的SSMS窗口中,我可以在事务运行时完全查询表.

为什么MSSQL不尊重锁定提示?

(SQL …

database sql-server sql-server-2016

7
推荐指数
2
解决办法
667
查看次数

使用CFINSERT - ColdFusion后获取主键

当我使用CFINSERT表单时,数据被插入到我的数据库中,因为字段名称与列名称匹配.

我的问题:如何使用CFINSERT获取我刚刚添加的行的主键?

我知道我不能使用类似于标准的"Result ='variable'",cfquery那么获得主键的最佳方法是什么?

如果我在我的cfinsert之后直接运行以下查询,它应该返回以前的PK:

<cfquery name="getID" datasource="#mydsn#" result="#result#">
select Max(id) as NewID from myTablename;
</cfquery>
Run Code Online (Sandbox Code Playgroud)

这是完成我想要做的最好的方法吗?

sql-server coldfusion cfquery primary-key

6
推荐指数
2
解决办法
2446
查看次数

如何从ColdFusion查询中丢弃一行?

给定查询(伪代码):

<cfquery name="myquery">SELECT * FROM stuff</cfquery>
Run Code Online (Sandbox Code Playgroud)

我如何摆脱第一条记录?在这种情况下,更改SQL不是一种选择.我试过了:myquery.RemoveRows(0,1);但收到了一个错误:

No matching Method/Function for Query.REMOVEROWS(numeric, numeric) found
Run Code Online (Sandbox Code Playgroud)

我在Railo 3 BTW上

coldfusion railo

5
推荐指数
1
解决办法
7387
查看次数

如何密集排名数据集

我试图得到一个密集的排名来组合数据集.在我的表中,我有ID,GRP_SET,SUB_SET和INTERVAL,它们只代表一个日期字段.当使用ID插入记录时,它们将被插入为3行的GRP_SET,显示为SUB_SET.正如您所看到的,当插入发生时,间隔可以在完成插入集之前稍微改变.

这是一些示例数据,DRANK列表示我想要获得的排名.

with q as (
select 1 id, 'a' GRP_SET, 1 as SUB_SET, 123 as interval, 1 as DRANK from dual union all
select 1, 'a', 2, 123, 1 from dual union all
select 1, 'a', 3, 124, 1 from dual union all
select 1, 'b', 1, 234, 2 from dual union all
select 1, 'b', 2, 235, 2 from dual union all
select 1, 'b', 3, 235, 2 from dual union all
select 1, 'a', 1, 331, 3 …
Run Code Online (Sandbox Code Playgroud)

sql oracle rank dense-rank

5
推荐指数
1
解决办法
180
查看次数

Oracle - 需要在给定字符串之间提取文本

示例 - 需要在"Begin begin"和"End end"之间提取所有内容.我试过这种方式:

with phrases as (
  select 'stackoverflow is awesome. Begin beginHello, World!End end It has everything!' as phrase
    from dual
         )
select regexp_replace(phrase
     , '([[:print:]]+Begin begin)([[:print:]]+)(End end[[:print:]]+)', '\2')
  from phrases
       ;
Run Code Online (Sandbox Code Playgroud)

结果:你好,世界!

但是,如果我的文本包含换行符,则会失败.任何提示如何修复此问题以允许提取包含新行的文本?

[编辑]它如何失败:

with phrases as (
  select 'stackoverflow is awesome. Begin beginHello, 
  World!End end It has everything!' as phrase
    from dual
         )
select regexp_replace(phrase
     , '([[:print:]]+Begin begin)([[:print:]]+)(End end[[:print:]]+)', '\2')
  from phrases
       ;
Run Code Online (Sandbox Code Playgroud)

结果:

stackoverflow很棒.开始吧你好,世界!结束它拥有一切!

应该:

你好,
世界!

[编辑]

另一个问题.我们来看看这个样本:

WITH phrases AS (
  SELECT …
Run Code Online (Sandbox Code Playgroud)

regex sql oracle plsql substring

5
推荐指数
2
解决办法
1万
查看次数

Solr搜索查询返回完整的头部异常

我在ac#应用程序中调用托管在其他机器上的远程solr搜索.现在,因为我的查询长度变得太大,所以搜索引擎返回完整的头错误.我不能减少查询长度.所以我只是想知道我可以发布同样的帖子请求吗?我该怎么做?请建议我.谢谢.

solr jetty solrnet c#-4.0

4
推荐指数
1
解决办法
3461
查看次数