2014-11-22 73 views
-3

中的某些值之间我想让我的表中的密码列的长度在一定长度之间,比如12到20之间,我该如何去做这件事。如何检查密码长度在sql

+2

不,你不知道。密码列应该包含长哈希。 – zzzzBov 2014-11-22 16:53:03

+0

@zzzzBov我只是想知道如何检查任何varchar值的长度 – fana 2014-11-22 17:02:46

+0

然后问* that *问题。如所写,这是[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – zzzzBov 2014-11-22 17:42:20

回答

0

我想这就是你要找的。

CREATE TABLE [dbo].[MyTestTable] ([myColumn] VARCHAR(20)) 
GO 
ALTER TABLE [dbo].[MyTestTable] 
ADD CONSTRAINT minlength CHECK (DATALENGTH([myColumn]) >= (12)) 
GO 

以下链接有一些额外的信息。另外,这家伙的博客是我见过的最好的sql。 http://blog.sqlauthority.com/2007/06/01/sql-server-2005-constraint-on-varcharmax-field-to-limit-it-certain-length/

+0

此答案是以密码以纯文本形式存储的,因此尽管技术上可能正确,但它似乎支持存储密码不正确。当然,他们应该使用适当的算法进行哈希处理。 – halfer 2014-11-22 18:53:04

+0

同意。 @fana在评论中澄清说,这个问题应该适用于任何varchar,这就是我为什么这样回答的原因。 – Asha 2014-11-22 19:34:10