标签: sql-server-2012

替换SQL Server 2012中的点,逗号和连字符

我有标题中提到的问题.我有一个包含一些部分的数据库,其代码如下:

ID | Part_name | Part_code
---+-----------+-----------
1  | ...       | 123.1-233
2  | ...       | 12.32,211
3  | ...       | 123-12,22
Run Code Online (Sandbox Code Playgroud)

我想执行一个SELECT查询,它将返回没有点,逗号和连字符的结果.我认为它可以完成,REPLACE()但我不能使它工作.

我试过了:

select replace(Parts.Part_code, '.', '') 
from Parts;
Run Code Online (Sandbox Code Playgroud)

并且它可以工作,但我无法使用任何正则表达式的多个标志,似乎SQL Server忽略方括号,因为它不适用于:

select replace(Parts.Part_code, '[\.]', '') 
from Parts;
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

regex sql sql-server sql-server-2012

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

在SQL Server中查找上周的第一天

我有一些日期和星期数,SQL Server中的一周的第一天是5(星期五)。现在,我想从下面的查询中计算上周和上周的开始日期。

DECLARE @LocationID tinyint = 1,
     @FromDate date = '2016-05-20',
     @ToDate date = '2016-05-29';

--Step1: ==================================================================
--SET first day of the week of the year
DECLARE @CurrentDayOfWeek INT
SET DATEFIRST 1 -- normalize current dkoray of week to Monday
SET @CurrentDayOfWeek = DATEPART(DW, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0))
SET DATEFIRST @CurrentDayOfWeek -- first day of week is now 5 (Friday)

--SELECT @CurrentDayOfWeek

-----Get Weekend number--------------
DECLARE @WeekStart int, @WeekEnd int

SET @WeekStart=(SELECT { fn WEEK( @FromDate) })
SET @WeekEnd=(SELECT …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2012

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

如何在SQL Server中将值设置为声明的变量

如何在SQL Server中将值设置为声明的变量.

DECLARE  @V_SEQUENCE INT,  @V_SEQUENCENAME NVARCHAR(MAX);
SET @V_SEQUENCENAME = 'dbo.MYSEQ';   
EXEC('SELECT @V_SEQUENCE = NEXT VALUE FOR  ' + @V_SEQUENCENAME)
SELECT @V_SEQUENCE
Run Code Online (Sandbox Code Playgroud)

我在这里得到一个错误:

必须声明标量变量"@V_SEQUENCE"'

请告诉我如何获得结果@V_SEQUENCE.

sql-server sequences sql-server-2012

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

只有在单个语句中不存在记录时才能INSERT吗?

我必须把值插入到表与这些列:Id MasterId ZipCode Locality Value,CreatedTime,UpdatedTime

这3列定义了一个唯一值: MasterId ZipCode Locality

这些列上的数据库没有唯一约束,但我需要确保2个用户无法输入相同的数据.我无法更改T-SQL数据库架构.

当前的SQL:

INSERT INTO dbo.Carrier VALUES (?, ?, ?, ?, ?, GETDATE(), GETDATE())
Run Code Online (Sandbox Code Playgroud)

我的SQL更改:

IF NOT EXISTS
(
    SELECT TOP 1 *
    FROM dbo.Carrier
    WHERE MasterId = ?
    AND ZipCode = ?
    AND Locality = ?
)
BEGIN
    INSERT INTO dbo.Carrier VALUES (?, ?, ?, ?, ?, GETDATE(), GETDATE())
END
Run Code Online (Sandbox Code Playgroud)

这些更改适用于标准用户输入,但也有一个服务同时插入许多条目.有时,此服务将尝试以多线程方式插入数千个相同的唯一行,并且SQL具有竞争条件,因为它不是一个语句.这允许在同时执行2个语句时输入重复项.

有没有办法只在单个语句中不存在记录时插入?

我在UPDATE上没有这个问题,因为我可以做一个UpdatedTime没有改变的地方.

sql sql-server sql-server-2012

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

Microsoft SQL Server,错误:87

我真的很累,已经3天了,我无法打开我的SQL Server Management Studio.我得到了数字87的连接字符串错误.下面的屏幕截图显示我的问题:

图片编号1

图片编号2

我使用localhost\MSSQLSERVER错误87和Arash-PC(我的机器名称)错误号2.

我也试过sqlcmd -U sa -S Arash-PC

sql-server sql-server-2012

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

在SQL Server 2012中向行号添加值

我想为行号添加特定值,但此语句不起作用:

SELECT (ROW_NUMBER()+1) OVER(ORDER BY col_1 value DESC) as Row   FROM table
Run Code Online (Sandbox Code Playgroud)

这样做的正确语法是什么?

sql sql-server sql-server-2012

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

'<'附近的语法不正确

我有一个任务是获取一些在SQL Server 2012上正常工作的代码,以便在SQL Server 2008 R2上工作.我收到了这个错误:

附加信息:'<'附近的语法不正确

当我尝试运行我的代码时,我发现我的SQL代码行中出了问题

ALTER TABLE [dbo].[WorkTimeEntries] 
  ADD [TimeFinishedForRuntime] AS ISNULL([TimeFinished],
        IIF ([TimeStarted] < SYSUTCDATETIME(), [dbo].[udf_GetCurrentDateTimeOffsetInTimeZone](DATENAME(TZOFFSET, [TimeStarted])), [TimeStarted]));
Run Code Online (Sandbox Code Playgroud)

我已经读到,在这种情况下,当人们试图获得约会时发生了某种错误,但我不确定我的情况有什么问题.

t-sql sql-server iif sql-server-2008-r2 sql-server-2012

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

如何在sql server中将字符串拆分为多个

我有一个如下的列数据,

126-35-56-24
Run Code Online (Sandbox Code Playgroud)

我希望结果像,

select 126 as Id, 35 as Age, 56 as EmpId, 24 as Day
Run Code Online (Sandbox Code Playgroud)

我只是尝试使用substring,我可以将字符串分成126和35-56-24,但我无法得到我想要的结果.

请帮我搞定.提前致谢...

sql t-sql sql-server substring sql-server-2012

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

SQL Server在多个列上进行透视

我有一个表,可以按小时计算一周的数据.

这是表结构(一天):

dayId   HourId  amount  category
--------------------------------
1       9       1       a
1       9       1       b
1       9       1       c
1       9       1       d
1      10       1       a
1      10       1       b
1      10       1       c
1      10       1       d
1      11       1       a
1      11       1       b
1      11       0       c
1      11       1       d
1      12       0       a
1      12       2       b
1      12       2       c
1      12       2       d
Run Code Online (Sandbox Code Playgroud)

我使用pivot来查看日常金额分布如下:

select 
    dayid,
    [9],
    [10],
    [11],
    [12]
from
    (select …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server pivot sql-server-2012

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

如何在SQL中显示总速率?

我需要SQL中的下表(quired data)中的项目明智总量.怎么做到这一点?请建议我 - 注意:请参阅附件,我无法正确粘贴.

在此输入图像描述

sql database sql-server-2012

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