【问题标题】:creating a password field in SQL SERVER 2008在 SQL SERVER 2008 中创建密码字段
【发布时间】:2014-07-31 14:57:53
【问题描述】:

我必须为我的 Diver 表创建一个密码字段, 密码必须正好是 8 个字符,并且只有数字 (0-9) 和字母 (a-z) 允许。我该怎么做?

我试过: 创建表 tblDiver ( DiverNumber int 主键, DiverPassword char(8) not null CHECK (DiverPassword like '[0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0- 9]') ) 但当然它只会让我只输入数字.. 我也想要字母

【问题讨论】:

  • 为什么要存储密码
  • 您应该加密您的密码,而不是以未加密的格式存储它们。 This answer explains more。你可以使用LIKE '[0-9|A-Z][0-9|A-Z]...etc 来做到这一点,但仅仅因为你可以并不意味着你应该这样做。我强烈建议您在客户端验证密码,并存储加密的密码。
  • 这是我的家庭练习 :) 我是一名学生,这些都是我们的要求.. 只是初学者 :)
  • 顺便说一句..你的建议不起作用:(

标签: sql-server passwords


【解决方案1】:

您不应该将未加密的密码保存在数据库中!绝不!

但是你想要的正则表达式是

like '[abcdefghijlmnopqrstuvzkwy0123456789][abcdefghijlmnopqrstuvzkwy0123456789][abcdefghijlmnopqrstuvzkwy0123456789][abcdefghijlmnopqrstuvzkwy0123456789][abcdefghijlmnopqrstuvzkwy0123456789][abcdefghijlmnopqrstuvzkwy0123456789][abcdefghijlmnopqrstuvzkwy0123456789][abcdefghijlmnopqrstuvzkwy0123456789]')

MSSQL 作为一个相当糟糕的正则表达式...

【讨论】:

  • ALTER TABLE tblDiver ADD CHECK (DiverPassword like ('[1-9a-z][1-9a-z][1-9a-z][1-9a-z][1-9a -z][1-9a-z][1-9a-z][1-9a-z]'))
猜你喜欢
  • 1970-01-01
  • 2014-10-25
  • 2013-12-16
  • 1970-01-01
  • 2013-10-31
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多