PDA

View Full Version : Sinh mã tự động trong sql, hic hic



bill_getas
15-07-2008, 11:03
Mình đang làm 1 đề tài về quan lý sinh viên, Mình cần sinh mã tự động có dạng như: SV1, SV2, SV3... Mình ko rành SQl lắm. Các bạn chỉ cho mình với.


Xin cám ơn

trungtd_vtic
15-07-2008, 15:01
tìm trước khi hỏi bạn nhé. Trong dd này có nhiều bài liên quan đến vấn đề bạn hỏi rồi

nguyen_lan2005
15-07-2008, 21:17
Nếu ở sài gòn bạn sẽ được hướng dẫn mọi thứ khi cần.
www.becivn.net
www.nguyenlan.net
YH nick: lanit_itec

sodepsochon.com
16-07-2008, 11:50
Mình đang làm 1 đề tài về quan lý sinh viên, Mình cần sinh mã tự động có dạng như: SV1, SV2, SV3... Mình ko rành SQl lắm. Các bạn chỉ cho mình với.


Xin cám ơn

Giả sử cái Table của bạn có cấu trúc
CREATE TABLE [dbo].[SINHVIEN] (
[ID] [decimal](18, 0) IDENTITY (1, 1) NOT NULL ,
[MaSV] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Hoten] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]

Bạn muốn insert 1000 sinh viên có mã từ SV1 đến SV1000, Chạy Query Analyzer rồi paste cái đoạn này vào, nhanh chóng và đơn giản:

declare @i decimal
set @i=1
while @i<=1000
begin
insert into SINHVIEN(MaSV,Hoten)
values('SV' + ltrim(rtrim(convert(varchar,@i))),'Ho ten sinh vien ma ' + ltrim(rtrim(convert(varchar,@i))))
set @i=@i+1
end

Đơn giản thế thôi, chúc bạn thành công!

embebongbong
18-07-2008, 08:22
Nếu ở sài gòn bạn sẽ được hướng dẫn mọi thứ khi cần.
www.becivn.net
www.nguyenlan.net
YH nick: lanit_itec

Câu này và cũng thấy trên diễn đàn này rất rất nhiều những câu trả lời thế này ? Diễn đàn thì đâu có giới hạn Vùng , miền , dân tộc hay khoảng cách chứ ? nếu trả lời được thì trả lời giúp còn ko thì.........im cha cho rồi chứ đọc mấy câu trả lời đại loại như vậy thật tốn nhiều thời gian. Mà dạo này nhiều câu như thế quá

sodepsochon.com
18-07-2008, 17:04
làm theo bạn như trên thì ra kiể SV9, SV10, cho mình hỏi nếu ID là SV0001, SV0002 thì làm thế nào

Nếu có quy định độ dài cố định thì hoàn toàn có thể sinh được. Sử dụng đoạn sscript sau:
- Giả sử mã có độ dài là 8 ký tự, nếu mà từ 10000000 đến 99999999 thi không thêm 0 vào đầu, còn lại thì thêm 8-độ dài của mã ký tự 0 vào đầu.


Code đây:

declare @i decimal
declare @leng decimal
declare @Masv nvarchar(10)
set @i=1
set @leng=8
while @i<=1000
begin
set @Masv = REPLICATE('0',8-len(ltrim(rtrim(convert(varchar,@i))))) + ltrim(rtrim(convert(varchar,@i)))
insert into SINHVIEN(MaSV,Hoten)
values('SV' + @Masv,'Ho ten sinh vien ma ' + @Masv)
set @i=@i+1
end