标签: sql-server

在数据库中存储时间(hh:mm)的最佳方法

我想将时间存储在数据库表中,但只需要存储小时和分钟.我知道我可以使用DATETIME并忽略日期的其他组件,但是如果不存储比我实际需要的更多信息,最好的方法是什么?

database sql-server datetime database-design

93
推荐指数
4
解决办法
12万
查看次数

最简单的递归自联接方式?

在SQL Server中执行递归自联接的最简单方法是什么?我有这样一张桌子:

PersonID | Initials | ParentID
1          CJ         NULL
2          EB         1
3          MB         1
4          SW         2
5          YT         NULL
6          IS         5
Run Code Online (Sandbox Code Playgroud)

而且我希望能够获得仅与特定人员开始的层次结构相关的记录.所以,如果我通过PersonID = 1请求CJ的层次结构,我会得到:

PersonID | Initials | ParentID
1          CJ         NULL
2          EB         1
3          MB         1
4          SW         2
Run Code Online (Sandbox Code Playgroud)

对于EB,我会得到:

PersonID | Initials | ParentID
2          EB         1
4          SW         2
Run Code Online (Sandbox Code Playgroud)

我有点卡住这个可以想不出怎么做除了基于一堆连接的固定深度响应.这会发生,因为我们不会有很多级别,但我想做得恰到好处.

谢谢!克里斯.

sql sql-server recursion self-join hierarchical-data

93
推荐指数
3
解决办法
9万
查看次数

93
推荐指数
8
解决办法
23万
查看次数

如何使用SQL语法更改主键约束?

我有一个表在主键约束中缺少一列.我不想通过SQL Server进行编辑,而是将其放在一个脚本中,以将其添加为更新脚本的一部分.

我可以使用什么语法来执行此操作?我必须放弃并重新创建关键约束吗?

sql-server

93
推荐指数
2
解决办法
15万
查看次数

GROUP BY组合/连接一列

我有一张桌子如下:

ID  User  Activity  PageURL  
 1  Me    act1      ab     
 2  Me    act1      cd     
 3  You   act2      xy     
 4  You   act2      st
Run Code Online (Sandbox Code Playgroud)

我希望按用户和活动进行分组,这样我最终得到的结果如下:

User  Activity  PageURL  
Me    act1      ab, cd     
You   act2      xy, st
Run Code Online (Sandbox Code Playgroud)

如您所见,列PageURL由基于group by的逗号分隔在一起.

真的很感激任何指针和建议.

sql sql-server group-by sql-server-2008

93
推荐指数
2
解决办法
18万
查看次数

是否有可用于确定SQL Server备份或还原过程进度的SQL脚本?

当我使用MS SQL Server Management Studio备份或恢复数据库时,我可以直观地看到进程进展的程度,以及我还需要等待多长时间才能完成.如果我用脚本开始备份或恢复,有没有办法监控进度,或者我只是坐下来等待它完成(希望没有出错?)

编辑:我的需要是能够完全独立于启动备份或恢复的会话监视备份或恢复进度.

sql-server backup restore

92
推荐指数
7
解决办法
20万
查看次数

如何在SQL Server Management Studio 2008中自动执行"生成脚本"任务?

我想在SQL Server Management Studio 2008中自动生成脚本.

现在我做的是:

  • 右键单击我的数据库,任务,"生成脚本......"
  • 手动选择我需要的所有导出选项,然后在"选择对象"选项卡上单击全选
  • 选择导出文件夹
  • 最后点击"完成"按钮

有没有办法自动完成这项任务?

编辑:我想生成创建脚本,而不是更改脚本.

sql-server automation ssms sql-server-2008 visual-studio-2008

92
推荐指数
7
解决办法
8万
查看次数

GUID的SCOPE_IDENTITY()?

任何人都能告诉我是否有相当于SCOPE_IDENTITY()在SQL Server中使用GUID作为主键的时候?

我不想先创建GUID并保存为变量,因为我们使用顺序GUID作为主键.

有什么最好的方法来检索最后插入的GUID主键吗?

sql sql-server guid uniqueidentifier scope-identity

92
推荐指数
3
解决办法
5万
查看次数

如何将int转换为带有前导零的char?

我需要将int datafield转换为带有前导零的nvarchar

例:

1转换为'001'

867转换为'000867'等

谢谢.


这是我4小时后的回复......

我测试了这个T-SQL脚本,对我来说工作正常!

DECLARE @number1 INT, @number2 INT

SET @number1 = 1

SET @number2 = 867

SELECT RIGHT('000' + CAST(@number1 AS NCHAR(3)), 3 ) AS NUMBER_CONVERTED

SELECT RIGHT('000000' + CAST(@number2 AS NCHAR(6)), 6 ) AS NUMBER_CONVERTED
Run Code Online (Sandbox Code Playgroud)

我创建了这个用户功能

T-SQL代码:

CREATE FUNCTION CIntToChar(@intVal BIGINT, @intLen Int) RETURNS nvarchar(20)
AS
BEGIN

    -- BIGINT = 2^63-1 (9,223,372,036,854,775,807) Max size number

    -- @intlen contains the string size to return
    IF @intlen > 20
       SET @intlen = 20

    RETURN REPLICATE('0',@intLen-LEN(RTRIM(CONVERT(nvarchar(20),@intVal)))) 
        + …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures

92
推荐指数
7
解决办法
20万
查看次数

使用T-SQL生成MD5哈希字符串

有没有办法生成类型为varchar(32)的MD5哈希字符串,而不使用fn_varbintohexstr

SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'email@dot.com')), 3, 32)
Run Code Online (Sandbox Code Playgroud)

所以它可以在带有SCHEMABINDING的视图中使用

t-sql sql-server sql-server-2008

92
推荐指数
6
解决办法
22万
查看次数