标签: t-sql

如果句点是 varchar 列中的第一个字符,则删除它

我正在将数据从旧系统迁移到我正在构建的新系统中,并发现有人在做一种不好的做法,即在某些人的姓名开头添加句点,以使他们首先出现在某些下拉列表中。我试图弄清楚如何删除这些句点,当它们是列的第一个字符时,而不删除名称后面的句点(例如中间名首字母)。此更改是在命令期间进行的INSERT INTO SELECT

sql-server t-sql functions

0
推荐指数
1
解决办法
6681
查看次数

数据库删除后已经存在对象错误

开始学习 SQL Server 并坚持使用这个简单的代码:

drop database if exists dbo;

create database dbo;

create table dbo.a_table (a_table_a_field   int not null);
Run Code Online (Sandbox Code Playgroud)

在 SSMS 中运行两次会给出:“数据库中已经有一个名为‘a_table’的对象。”

看来我的做法完全错误。请帮忙。

sql-server windows t-sql

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

从 SQL 查询中排除记录

我有一个表,我试图只返回 rendition_type Interactive 的记录,而没有其他关联的 rendition_type。如果一个记录有多个 rendition_type,我需要将它从列表中排除。

DOC_ID    RENDITION_ID    RENDITION_TYPE
001       001             Interactive
001       002             Web PDF
002       003             Interactive
003       004             Interactive
003       005             Print PDF
004       006             Interactive
005       007             Interactive
005       008             Web PDF
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个查询,该查询将仅返回 document_ID 的 Rendition_type 类型仅为 1 且该类型为 Interactive 的行。

sql-server t-sql sql-server-2017

0
推荐指数
1
解决办法
123
查看次数

在哪里放单引号?

我正在尝试执行以下语句,该语句创建一个名为 service2019 的数据库:

DECLARE @dbname VARCHAR(50);
SET @dbname = 'service' + CAST(YEAR(GETDATE()) AS VARCHAR(4));


EXEC (
'CREATE DATABASE ' + @dbname  + ' ON  PRIMARY 
( NAME =' + '' + @dbname +'' + ', FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014TEST\MSSQL\DATA\''' + '''' + @dbname + '''' + '''.mdf'''  + ', SIZE = 10MB , MAXSIZE = UNLIMITED, FILEGROWTH = 100KB )
 LOG ON 
( NAME =' + '' + @dbname + '_log' + ', FILENAME = ''C:\Program Files\Microsoft SQL …
Run Code Online (Sandbox Code Playgroud)

sql-server dynamic-sql t-sql sql-server-2014 quoted-identifier

0
推荐指数
1
解决办法
68
查看次数

IF 语句的问题

我遇到了这个存储过程的问题。当用户选择“是”时,它应该按照它在“是”的 if 语句中所说的那样做,但它什么也不做,也不向数据库中插入任何内容。它适用于“否”条件。你能告诉我什么不起作用吗?

ALTER PROCEDURE [dbo].[sp_ff_Insert_ProjectApproved]
(

        @project_no varchar(6)
       ,@sequence_no int
       ,@grant_programme varchar(2)
       ,@jobs_approved int
       ,@grant_amount int
       ,@Committee varchar(4)
       ,@Meeting_no int
       ,@Minute_Item int
       ,@jobs_maintained int
       ,@approval_date date
       ,@approval_by int
       ,@comments varchar(1600)
       ,@created_by int
       ,@created_date datetime
       ,@updated_by int
       ,@updated_date datetime
       ,@approval varchar(5)
       ,@ratify varchar(3)




       --,@research_type varchar(1)='T'
)

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from


DECLARE @ReturnValue int,
        @post_approval_status varchar(3),
        @approval_status varchar(3),
        @current_status varchar(3)  

set @current_status = ( SELECT approval_status from approval_master_tbl
         WHERE project_no = @project_no …
Run Code Online (Sandbox Code Playgroud)

null sql-server t-sql

0
推荐指数
1
解决办法
52
查看次数

“同时处理多行。减少并重试。” SQL Server Management Studio 中的错误

尝试从 SQL Server Management Studio v18.5 更新某些行时出现此错误:

消息 50000,级别 16,状态 1,过程 UPDATElimit,第 7 行 [批处理起始行 0] 要同时处理许多行。减少并重试。Msg 3609, Level 16, State 1, Line 1 事务在触发器中结束。该批次已中止。

我怎样才能绕过这个限制?

触发代码:

ALTER TRIGGER [dbo].[UPDATElimit] 
on [dbo].[table] 
FOR UPDATE 
AS 
BEGIN 
    IF (select count(*) from inserted) > 1000 
    BEGIN 
        RAISERROR('To many rows being processed at one. Reduce and try again.', 16, 1) 
        ROLLBACK 
    END 
END
Run Code Online (Sandbox Code Playgroud)

trigger sql-server t-sql

0
推荐指数
1
解决办法
95
查看次数

在非聚集索引中将许多列作为包含列的成本是多少?

在 SQL Server 的非聚集索引中将许多列作为包含列的成本是多少?

sql-server t-sql

0
推荐指数
2
解决办法
133
查看次数

如何查看索引是否正在从 DMV 中“有序”读取

我有一个用于许多报告查询的表。我想知道以“有序”方式读取表格的次数。在聚集索引扫描的执行计划中,可以看到读取是否“有序”。此信息是否在其他地方可用,或者是搜索计划缓存的唯一解决方案?

sql-server t-sql execution-plan plan-cache

0
推荐指数
1
解决办法
59
查看次数

使用 ORDER BY 从 SELECT 创建 Azure Synapse 临时表

当我省略该ORDER BY子句时,或者如果我将其作为选择运行并省略创建表部分,我有以下语句,但我需要这两者来确保生成的密钥排序正确

有任何想法吗?

消息 104381​​,级别 16,状态 1,第 18 行
ORDER BY 子句在视图、CREATE TABLE AS SELECT、INSERT SELECT、SELECT INTO、内联函数、派生表、子查询和公用表表达式中无效,除非 TOP 或 FOR XML 是还指定。

CREATE TABLE #demo
WITH (DISTRIBUTION = ROUND_ROBIN)
AS
SELECT 
       ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS ID,
       schemas.name as [schema], 
       tables.name as [table], 
       columns.column_id as [ordinal],
       columns.name as [column],
       types.name as [type]
FROM SYS.COLUMNS
  inner join sys.types
          on  types.system_type_id = columns.system_type_id
  inner join sys.tables
          on  tables.object_id = columns.object_id
  inner join sys.schemas
          on  schemas.schema_id = tables.schema_id
order by …
Run Code Online (Sandbox Code Playgroud)

t-sql temporary-tables azure-synapse-analytics

0
推荐指数
1
解决办法
2800
查看次数

如何修改我现有的 T-SQL 查询以适用于链接服务器?

我正在使用SQL Server 2014并且我需要修改我现有的T-SQL查询,以便它适用于链接服务器。

我现有的代码如下:

USE [MyDatabase]

SELECT name 
FROM sysobjects
WHERE id IN ( SELECT id 
              FROM syscolumns 
              WHERE name like '%SPA%' )
Run Code Online (Sandbox Code Playgroud)

我通常使用以下方法连接到链接服务器:

Use [MyDatabase]

Select * from [xxx.xx.0.20].[LinkedDatabaseName].dbo.[TableName]
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这里给出的答案(但它仍然不起作用):无法通过链接服务器查询 SQL 服务器元数据

这是我的尝试(尽管与上面显示的现有代码相比,我不太明白为什么我需要将该点 (.) 放在 sysobjects 中):

   USE [MyDatabase]
    
    SELECT name 
    FROM [xxx.xx.0.20].[LinkedDatabaseName].sys.objects
    WHERE id IN ( SELECT id 
                  FROM syscolumns 
                  WHERE name like '%SPA%' )
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:“无效的列名 'id'。”

sql-server t-sql linked-server

0
推荐指数
1
解决办法
44
查看次数