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
    • 最新
    • 标签
主页 / user-37765

AA.SC's questions

Martin Hope
AA.SC
Asked: 2023-08-24 17:23:52 +0800 CST

在多列上进行文本搜索而不启用全文搜索

  • 5

我有一个场景,我们需要在文本字段中启用多关键字搜索。此搜索应涉及在多个表(当前为 2 个表)中的多个列(大约 4-6 列)中扫描关键字。

问题,我可以使用简单的“AND”“OR”运算符构建查询

  1. 尝试 1 中的查询:返回超出所需的输出

  2. 尝试 2 中的查询:在输出中返回零记录

  3. 所需的输出:是尝试 1 输出中唯一的第一行

     -- truncate table #Customer
    
     -- truncate table #FaxDocs    
    

    -- 创建表

     CREATE tABLE #FaxDocs ( [FaxDocID] INT , CustID INT,  RemoteCSID VARCHAR(20),  CSFileName VARCHAR(200))
    
     INSERT INTO #FaxDocs
    
     SELECT 1,1,'123ag','257831.PDF'
    
     UNION ALL 
    
     SELECT 2,1,'123yg','257837.PDF'
    
     UNION ALL 
    
     SELECT 3,2,'123g','257838.PDF'
    
     UNION ALL 
    
     SELECT 4,3,'123lg','257839.PDF'
    
     UNION ALL 
    
     SELECT 5,4,'123CK','257840.PDF'
    
    
    
     CREATE TABLE #Customer ( CustID INT , CFNAME VARCHAR(20),  CLNAME VARCHAR(200))
    
     insert into #Customer
    
     SELECT 1,'ABCNJSGHK', 'CDE'
    
     UNION ALL 
    
     SELECT 2,'CNJSGHK', 'CDE'
    
     UNION ALL 
    
     SELECT 3,'FGH', 'IJK'
    
     UNION ALL 
    
     SELECT 4,'LMN', 'OPQ'
    

    --- 搜索栏关键字

     DECLARE @Search VARCHAR(MAX) =  'NJSGHK 257831.PDF'     
    
    
    
         --CREATE TABLE #WordsToLookUp (Item VARCHAR(257), Location INT, Sequence INT PRIMARY KEY)
    
    
    
             INSERT INTO #WordsToLookUp(Item,[Location],[Sequence])
    
             SELECT 'NJSGHK',0,1
    
             UNION ALL 
    
             SELECT '257831.PDF',8,2
    
    
    
         ----------------------------------------------------------
    
    
    
              SELECT * FROM #WordsToLookUp
    
             --truncate table  #WordsToLookUp
    
    
    
     --- Attempt 1
    
              SELECT  [FaxDocID], Customer.CustID ,ISNULL(Customer.CFNAME,'') AS [FName], ISNULL(Customer.CLNAME,'') AS [LName] ,
    
                 Faxes.CSFileName
    
                 FROM #FaxDocs Faxes
    
                 LEFT JOIN #Customer Customer ON Faxes.CustID = Customer.CustID 
    
                 left join #WordsToLookUp B on Customer.CFNAME  like '%'+ b.item+'%'
    
                 left join #WordsToLookUp c on Customer.CLNAME  like '%'+ c.item+'%'
    
                 left join #WordsToLookUp d on Faxes.RemoteCSID  like '%'+ d.item+'%'
    
                 left join #WordsToLookUp e on Faxes.CSFileName  like '%'+ e.item+'%'
    
                 WHERE Faxes.[FaxDocID] in (1,2,3,4)
    
    
    
     -- Attempt 2
    
                 SELECT  [FaxDocID], Customer.CustID ,ISNULL(Customer.CFNAME,'') AS [FName], ISNULL(Customer.CLNAME,'') AS [LName] ,
    
                 Faxes.CSFileName
    
                 FROM #FaxDocs Faxes
    
                 LEFT JOIN #Customer Customer ON Faxes.CustID = Customer.CustID 
    
                 WHERE Faxes.[FaxDocID] in (1,2,3,4)
    
                 and exists (select 1 from #WordsToLookUp b where Customer.CFNAME  like '%'+ b.item+'%')
    
                 and exists (select 1 from #WordsToLookUp c where Customer.CLNAME  like '%'+ c.item+'%')
    
                 and exists (select 1 from #WordsToLookUp d where Faxes.RemoteCSID  like '%'+ d.item+'%')
    
                 and exists (select 1 from #WordsToLookUp e where Faxes.CSFileName  like '%'+ e.item+'%')
    
sql-server
  • 1 个回答
  • 29 Views
Martin Hope
AA.SC
Asked: 2016-02-23 23:59:56 +0800 CST

计算总访问次数

  • 12

我正在尝试编写一个查询,我必须通过处理重叠天数来计算客户的访问次数。假设 itemID 2009 的开始日期是 23 日,结束日期是 26 日,因此项目 20010 在这几天之间,我们不会将此购买日期添加到我们的总数中。

示例场景:

Item ID Start Date   End Date   Number of days     Number of days Candidate for visit count
20009   2015-01-23  2015-01-26     4                      4
20010   2015-01-24  2015-01-24     1                      0
20011   2015-01-23  2015-01-26     4                      0
20012   2015-01-23  2015-01-27     5                      1
20013   2015-01-23  2015-01-27     5                      0
20014   2015-01-29  2015-01-30     2                      2

输出应为 7 VisitDays

输入表:

CREATE TABLE #Items    
(
CustID INT,
ItemID INT,
StartDate DATETIME,
EndDate DATETIME
)           


INSERT INTO #Items
SELECT 11205, 20009, '2015-01-23',  '2015-01-26'  
UNION ALL 
SELECT 11205, 20010, '2015-01-24',  '2015-01-24'    
UNION ALL  
SELECT 11205, 20011, '2015-01-23',  '2015-01-26' 
UNION ALL  
SELECT 11205, 20012, '2015-01-23',  '2015-01-27'  
UNION ALL  
SELECT 11205, 20012, '2015-01-23',  '2015-01-27'   
UNION ALL  
SELECT 11205, 20012, '2015-01-28',  '2015-01-29'  

到目前为止我已经尝试过:

CREATE TABLE #VisitsTable
    (
      StartDate DATETIME,
      EndDate DATETIME
    )

INSERT  INTO #VisitsTable
        SELECT DISTINCT
                StartDate,
                EndDate
        FROM    #Items items
        WHERE   CustID = 11205
        ORDER BY StartDate ASC

IF EXISTS (SELECT TOP 1 1 FROM #VisitsTable) 
BEGIN 


SELECT  ISNULL(SUM(VisitDays),1)
FROM    ( SELECT DISTINCT
                    abc.StartDate,
                    abc.EndDate,
                    DATEDIFF(DD, abc.StartDate, abc.EndDate) + 1 VisitDays
          FROM      #VisitsTable abc
                    INNER JOIN #VisitsTable bc ON bc.StartDate NOT BETWEEN abc.StartDate AND abc.EndDate      
        ) Visits

END



--DROP TABLE #Items 
--DROP TABLE #VisitsTable      
sql-server sql-server-2008-r2
  • 4 个回答
  • 2117 Views
Martin Hope
AA.SC
Asked: 2016-02-18 03:05:06 +0800 CST

为时间表生成时间段的有效方法

  • 2

我有一个名为#MySchedulecolumnsStartTime和EndTime的表duration。

我需要的是一个查询,以根据持续时间列在这些 StartTime 和 EndTime 之间获取 MySchedule 中每一行的所有时间槽。

我的日程表:

create table #MySchedule
(
startTime datetime, 
endtime datetime,
duration int
)

insert into #MySchedule
select '1/3/15 10:00 AM' startTime ,'1/3/15 4:00 PM' endTime ,15 duration 
union all 
select '1/4/15 10:00 AM' startTime ,'1/4/15 2:00 PM' endTime ,30 duration 
union all 
select '1/5/15 10:00 AM' startTime ,'1/5/15 4:00 PM' endTime ,45 duration 

预期输出:

    Slots   StartTime           EndTime
    1       '1/3/15 10:00 AM'   '1/3/15 10:15 AM'
    2       '1/3/15 10:15 AM'   '1/3/15 10:30 AM'
    3       '1/3/15 10:30 AM'   '1/3/15 10:45 AM'
    4       '1/3/15 10:45 AM'   '1/3/15 11:00 AM'
    5       '1/3/15 11:00 AM'   '1/3/15 11:15 AM'
    .       ...                 ...
    .       '1/3/15 3:45 PM'    '1/3/15 4:00 PM'
    ---------------------------------------------
    .       '1/4/15 10:00 AM'   '1/4/15 10:30 AM'
    .       '1/4/15 10:30 AM'   '1/4/15 11:00 AM'
    .       ...                 ...
    .       '1/4/15 13:30 AM'   '1/4/15 14:00 PM'
    ---------------------------------------------
    .       '1/5/15 10:00 AM'   '1/5/15 10:45 AM'
    .       '1/5/15 10:45 AM'   '1/5/15 11:30 AM'
    .       ...                 ...
    .       '1/5/15 15:15 AM'   '1/5/15 16:00 PM'
sql-server sql-server-2008
  • 1 个回答
  • 5243 Views
Martin Hope
AA.SC
Asked: 2015-12-31 05:08:11 +0800 CST

将最后一个身份插入表中的最佳方法

  • 46

哪一个是获取我刚刚通过插入生成的标识值的最佳选择?这些陈述对性能有什么影响?

  1. SCOPE_IDENTITY()
  2. 聚合函数MAX()
  3. 从表名中选择TOP 1身份列ORDER BY IdentityColumn DESC
sql-server sql-server-2008-r2
  • 2 个回答
  • 246327 Views
Martin Hope
AA.SC
Asked: 2015-11-14 01:39:32 +0800 CST

使用 CTE 的 SQL Server 分页

  • 2

我必须根据要求对查询应用分页我需要两个额外的列而不是查询结果
1. 总记录
2. 总页数

但我试图确认这是检索总页数的正确方法

CASE WHEN TotalRec%@PageSize > 0 THEN TotalRec/@PageSize) +1 ELSE TotalRec/@PageSize) END  TotalPage
WITH CTE 
AS
(
        SELECT COUNT(*) OVER() TotalRec, ROW_Number() over(ORDER BY id) RowNo, ColumnOne, ColumnTwo
        FROM
        (           
        SELECT ColumnOne, ColumnTwo
        FROM table1 ct LEFT OUTER JOIN table2 IR ON ct.code=IR.code                         
        WHERE table1.code=3
        Group By  ColumnOne, ColumnTwo

        )ImmCat
)

    SELECT TotalRec TotalRec, 
    CASE WHEN TotalRec%@PageSize > 0 THEN TotalRec/@PageSize) +1 ELSE TotalRec/@PageSize) END  TotalPage 
    ,ColumnOne, ColumnTwo
    FROM CTE
    WHERE RowNo BETWEEN (((@PageNo - 1)*@PageSize) + 1)) AND (@PageNo * @PageSize)) 
sql-server sql-server-2008-r2
  • 3 个回答
  • 885 Views
Martin Hope
AA.SC
Asked: 2015-08-28 00:16:11 +0800 CST

零行返回查询 DMV sys.dm_os_performance_counters

  • 9

我有一个具有服务器查看状态权限SQL Server 2014 Standard Edition (RTM)的SYSADMIN角色的用户,但是当我执行 DMV 时sys.dm_os_performance_counters,它没有返回任何记录。

知道权限有什么问题吗?

在此处输入图像描述

@@版本的输出:

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) Feb 20 2014 20:04:26 版权所有 (c) Windows NT 6.3(Build 9600:)上的 Microsoft Corporation Standard Edition(64 位)(Hypervisor)

sql-server sql-server-2014
  • 1 个回答
  • 1365 Views
Martin Hope
AA.SC
Asked: 2015-01-14 23:33:03 +0800 CST

更改表语句失败 -Msg 207,级别 16,状态 1

  • 2

我编写了一个脚本来在表中添加一列,并在成功执行时更新其值。我知道这只是一个简单的脚本,但是 'IF NOT EXISTS' 语句有什么问题,为什么 BEGIN 和 END 之间的脚本没有执行并返回错误。我验证没有数据库级别的 DDL 触发器来停止在数据库中添加列。

消息 207,级别 16,状态 1,第 24 行
无效的列名 ColumnName。

DECLARE @CloumnAdded bit
SET @CloumnAdded = 0

IF NOT EXISTS ( SELECT  1
                FROM    Sys.Columns
                WHERE   [Object_ID] = Object_ID('DBName.dbo.TableName')
                        AND Name = 'ColumnName' ) 
    BEGIN

        ALTER TABLE TableName  ADD ColumnName varchar(120)

        SET @CloumnAdded = 1

        select @CloumnAdded, 'step 1 '
    END


IF ( @CloumnAdded = 1 ) 
    BEGIN
        select @CloumnAdded,'step 2'

        UPDATE  TableName
        SET     ColumnName = '2669'

        select @CloumnAdded,'step 3'
    END

GO
sql-server sql-server-2008-r2
  • 1 个回答
  • 3583 Views
Martin Hope
AA.SC
Asked: 2014-11-25 04:40:58 +0800 CST

SSIS - 当未找到特定连接元素时,Connections 集合会引发此错误

  • 9

我正在编写一个包以将查询结果作为 CSV 文件上传到 FTP。

包在本地机器上运行良好,但在另一个环境中传输 .dtsConfig 和 .dtsx 后,它在执行包中的所有任务后抛出以下错误消息。

说明:未找到连接“{008A2775-60D6-44B1-8790-69958EB74371}”。当未找到特定连接元素时,Connections 集合会引发此错误。结束错误错误:2014-11-24 07:32:05.79 代码:0xC001000E 源:PackageName
描述:找不到连接“{008A2775-60D6-44B1-8790-69958EB74371}”。当未找到特定连接元素时,Connections 集合会引发此错误。结束错误 DTExec:包执行返回 DTSER_FAILURE (1)。开始时间:上午 7:32:05 结束时间:上午 7:32:07 经过时间:1.81 秒。包执行失败。步骤失败。

知道是什么原因吗?

sql-server sql-server-2008-r2
  • 1 个回答
  • 50350 Views
Martin Hope
AA.SC
Asked: 2014-11-06 22:58:29 +0800 CST

sys.indexes 中的 is_unique 列和 is_unique_constraint 列有什么区别

  • 6

我们有两列is_unique,其中is_unique_constraint有独特的约束sys.indexes,我想根据这两列澄清一些概念

  1. 两种类型的索引的创建语句除了fill factor属性值之外是相同的,还是我遗漏了什么?
  2. 如果语句 1 为真,那么为什么我们在 sys.indexes 中有两列用于唯一约束?
  3. 何时is_unique=1 is_unique_constraint =0然后删除索引的语句是
    DROP INDEX [index name] ON [dbo].[TableName] WITH ( ONLINE = OFF )

    何时is_unique=1 is_unique_constraint =1然后删除索引的语句是
    ALTER TABLE [dbo].[TableName] DROP CONSTRAINT [IndexName]

    为什么呢?

  4. 我们在哪里使用唯一索引以及在哪里使用唯一约束,最佳实践是什么?

sql-server sql-server-2008-r2
  • 2 个回答
  • 1722 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