如何使用特定字符串自动生成用户名?

时间:2012-05-17 05:05:43

标签: asp.net mysql database

我正在使用asp.net2008和MY SQL。

我想自动生成字段用户名的值,格式为

"SISI001", "SISI002",

等。在SQL中插入新记录时。

我该怎么做?

SQL查询可以是什么?

感谢。

4 个答案:

答案 0 :(得分:2)

添加具有自动增量整数数据类型的列 然后使用“Max()”函数获取表中该列的最大值,并将该值赋给整数变量(让变量为'x')。
之后

string userid = "SISI";
x=x+1;
string count = new string('0',6-x.ToString().length);
userid=userid+count+x.ToString();

使用userid作为username
希望能帮助到你。祝你好运。

答案 1 :(得分:1)

PLAN A> 您需要保留一个表(键),其中包含为各种实体生成的最后一个数字ID。这种情况下实体是“用户”。因此该表将包含两个cols即。 entity varchar(100)and lastid int。

然后,您可以编写一个函数来接收实体名称并返回递增的ID。使用与字符串组件“SISI”连接的此ID传递给MySQL以插入数据库。

以下是MySQL Table tblkeys:

CREATE TABLE `tblkeys` (
  `entity` varchar(100) NOT NULL,
  `lastid` int(11) NOT NULL,
  PRIMARY KEY (`entity`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

MySQL功能:

DELIMITER $$

CREATE FUNCTION `getkey`( ps_entity VARCHAR(100)) RETURNS INT(11)
BEGIN
    DECLARE ll_lastid INT;
    UPDATE tblkeys SET lastid = lastid+1 WHERE tblkeys.entity = ps_entity;
    SELECT tblkeys.lastid INTO ll_lastid FROM tblkeys WHERE tblkeys.entity = ps_entity;
    RETURN ll_lastid;
    END$$

DELIMITER ;

示例函数调用:

SELECT getkey('user')

Sample Insert命令:

insert into users(username, password) values ('SISI'+getkey('user'), '$password')

计划B> 这样ID会有点大,但不需要任何额外的表。使用以下SQL获取新的唯一ID:

SELECT ROUND(NOW() + 0)

您可以将其作为insert命令的一部分传递,并将其与“SISI”的字符串组件连接。

答案 2 :(得分:0)

我不是asp.net开发人员,但我可以帮助你 你可以这样做......

在mysql数据库中创建一个序列 -

CREATE SEQUENCE "Database_name"."SEQUENCE1" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 001 START WITH 21 CACHE 20 NOORDER NOCYCLE ;

然后在插入时使用此查询-----

 insert into testing (userName) values(concat('SISI', sequence1.nextval))

它可以帮助你怀疑......

答案 3 :(得分:0)

试试这个:

CREATE TABLE Users (
 IDs int NOT NULL IDENTITY (1, 1),
 USERNAME AS 'SISI' + RIGHT('000000000' + CAST(IDs as varchar(10)), 4), --//getting uniqueness of IDs field
 Address varchar(150) 
)

(未经测试)