关闭

身份证升位和中英文转化

标签: nulltable存储usergo
366人阅读 评论(0) 收藏 举报
分类:
declare @i as int
declare @j as int
declare @S as int
declare @NewPersonID As char(20)
declare @PersonID as char(50)    
 
         
SET @PersonID='210103530204152'
        
--去掉空格:
        set  @PersonID = rtrim(ltrim(@PersonID))

        
--如果不是数字,就返回原来的字符 :
        If IsNumeric(@PersonID= 0 or len(@PersonID<> 15  
    
begin
            
select @PersonID
        
End  

        
set @NewPersonID = SUBSTRING(@PersonID16+ '19' + SUBSTRING(@PersonID7,9)
        
set @S = 0
        
set @i=1
    
    
--Dim w() As Integer = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1}

    
while @i<=17
        
begin
    
if      @i - 1=0
        
SET @j = Cast(SUBSTRING(@NewPersonID,@i1AS int* 7
    
else if @i - 1=1
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 9
    
else if @i - 1=2
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 10
    
else if @i - 1=3
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 5
    
else if @i - 1=4
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 8
    
else if @i - 1=5
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 4
    
else if @i - 1=6
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 2
    
else if @i - 1=7
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 1
    
else if @i - 1=8
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 6
    
else if @i - 1=9
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 3
    
else if @i - 1=10
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 7
    
else if @i - 1=11
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 9
    
else if @i - 1=12
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 10
    
else if @i - 1=13
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 5
    
else if @i - 1=14
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 8
    
else if @i - 1=15
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 4
    
else if @i - 1=16
        
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 2
    
else if @i - 1=17
         
SET @j = Cast(SUBSTRING(@NewPersonID@i1AS int* 1
     
set  @S = @S + @j
     
set  @i= @i+1
     
end      
 
--        Dim a() As String = {"1", " 0", "x", "9", "8", "7", "6", "5", "4", "3", "2"}
    set  @S = @S % 11
if     @S=0
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  '1'
else if @S=1
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  '0'
else if @S=2
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  'x'
else if @S=3
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  '9'
else if @S=4
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  '8'
else if @S=5
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  '7'
else if @S=6
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  '6'
else if @S=7
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  '5'
else if @S=8
     
select  ltrim(rtrim(cast(@NewPersonID as  char(20)))) + '4'
else if @S=9
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  '3'
else if @S=10
     
select  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  '2'
 

‘————————————————————————————————————————————————
-
 
'函数:
 CREATE FUNCTION [dbo].[PersonID15To18] (@PersonID char(50))  
RETURNS char(20) AS  

BEGIN 
declare @i as int
declare @j as int
declare @S as int
declare @NewPersonID As char(20)
  
       --  SET @PersonID=
'210103530204152'
        --去掉空格:
        set  @PersonID = rtrim(ltrim(@PersonID))

        --如果不是数字,就返回原来的字符 :
        If IsNumeric(@PersonID) = 0 or len(@PersonID) <> 15  
    begin
            return @PersonID
        End  

        set @NewPersonID = SUBSTRING(@PersonID, 1, 6) + 
'19' + SUBSTRING(@PersonID, 7,9)
        set @S = 0
        set @i=1
    
    --Dim w() As Integer = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1}

    while @i<=17
        begin
    if      @i - 1=0
        SET @j = Cast(SUBSTRING(@NewPersonID,@i, 1) AS int) * 7
    else if @i - 1=1
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 9
    else if @i - 1=2
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 10
    else if @i - 1=3
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 5
    else if @i - 1=4
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 8
    else if @i - 1=5
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 4
    else if @i - 1=6
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 2
    else if @i - 1=7
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 1
    else if @i - 1=8
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 6
    else if @i - 1=9
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 3
    else if @i - 1=10
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 7
    else if @i - 1=11
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 9
    else if @i - 1=12
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 10
    else if @i - 1=13
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 5
    else if @i - 1=14
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 8
    else if @i - 1=15
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 4
    else if @i - 1=16
        SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 2
    else if @i - 1=17
         SET @j = Cast(SUBSTRING(@NewPersonID, @i, 1) AS int) * 1
     set  @S = @S + @j
     set  @i= @i+1
     end      
 --        Dim a() As String = {"1", " 0", "x", "9", "8", "7", "6", "5", "4", "3", "2"}
    set  @S = @S % 11
if     @S=0
     set @NewPersonID=  ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'1'
else if @S=1
      set @NewPersonID=   ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'0'
else if @S=2
      set @NewPersonID=   ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'x'
else if @S=3
      set @NewPersonID=    ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'9'
else if @S=4
      set @NewPersonID=   ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'8'
else if @S=5
      set @NewPersonID=   ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'7'
else if @S=6
      set @NewPersonID=   ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'6'
else if @S=7
      set @NewPersonID=   ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'5'
else if @S=8
      set @NewPersonID=   ltrim(rtrim(cast(@NewPersonID as  char(20)))) + 
'4'
else if @S=9
      set @NewPersonID=   ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'3'
else if @S=10
      set @NewPersonID=   ltrim(rtrim(cast(@NewPersonID as char(20)))) +  
'2'
     return   @NewPersonID
END

//-------------
--进行汉英转换的存储过程
--进行汉英转换的存储过程
CREATE procedure cechange as 
SET NOCOUNT ON

delete fielddiscription
INSERT INTO fielddiscription (tablename,tableid,columnname)SELECT sysobjects.name as tablename,sysobjects.id as id,
    syscolumns.name as columnname FROM
             syscolumns inner join sysobjects on syscolumns.id=sysobjects.id
                     where sysobjects.xtype=
'U'
                                    order by tablename
DECLARE @tablename varchar(128), @columnname varchar(128), @discription varchar(50)
DECLARE authors_cursor CURSOR FOR SELECT tablename,columnname,discription FROM fielddiscription ORDER BY tablename

OPEN authors_cursor
FETCH NEXT FROM authors_cursor  INTO @tablename, @columnname, @discription
WHILE @@FETCH_STATUS = 0
BEGIN
    declare @value1 varchar(50),@i int 
    select @i=count(value) from ::fn_listExtendedProperty(null,
'user','dbo','table',@tablename,'column',null) where objname=@columnname
    if @i<>0
        select @value1=cast(value as varchar) from ::fn_listExtendedProperty(null,
'user','dbo','table',@tablename,'column',null) where 

objname=@columnname
    else
        set @value1=
' '
    update fielddiscription set discription=@value1 where tablename=@tablename and columnname=@columnname
    FETCH NEXT FROM authors_cursor INTO @tablename, @columnname, @discription
END
CLOSE authors_cursor
 
DEALLOCATE authors_cursor
insert fielddiscription (columnname,discription)values(
'select','选择')
insert fielddiscription (columnname,discription)values(
'cnt','数目')
insert fielddiscription (columnname,discription)values(
'IsRequiredHan','/选修')
GO



 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:54961次
    • 积分:861
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:58篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论