我有标题中提到的问题.我有一个包含一些部分的数据库,其代码如下:
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)
有帮助吗?
我有一些日期和星期数,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 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.
我必须把值插入到表与这些列: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没有改变的地方.
我真的很累,已经3天了,我无法打开我的SQL Server Management Studio.我得到了数字87的连接字符串错误.下面的屏幕截图显示我的问题:


我使用localhost\MSSQLSERVER错误87和Arash-PC(我的机器名称)错误号2.
我也试过sqlcmd -U sa -S Arash-PC了
我想为行号添加特定值,但此语句不起作用:
SELECT (ROW_NUMBER()+1) OVER(ORDER BY col_1 value DESC) as Row FROM table
Run Code Online (Sandbox Code Playgroud)
这样做的正确语法是什么?
我有一个任务是获取一些在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)
我已经读到,在这种情况下,当人们试图获得约会时发生了某种错误,但我不确定我的情况有什么问题.
我有一个如下的列数据,
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,但我无法得到我想要的结果.
请帮我搞定.提前致谢...
我有一个表,可以按小时计算一周的数据.
这是表结构(一天):
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-server-2012 ×10
sql-server ×9
sql ×7
t-sql ×3
database ×1
iif ×1
pivot ×1
regex ×1
sequences ×1
substring ×1