Мне нужно отобразить текст с системным значением I.e буквенно-цифровое значение.и вставить в базу данных sql

У меня есть 4 местоположения Ченнаи, Банглор, Хайдарабад, Мумбаи.

В зависимости от выбора пользователя из выпадающего списка, мне нужно gennerate идентификатор, как это:

If they select Chennai - CHE001,CH002,CHE002,CHE003,CHE004.....etc
If they select Mumbai - MUM001,MUM002,MUM003,MUM004.......etc
If they select Hyderabad - HYD001,HYD002,HYD003,HYD004........etc

как это в базе данных он должен сохранить
Как этот автоматически генерируемый идентификатор, который должен быть сохранен в базе данных, но он должен быть уникальным…. I don’t how it will work with SQL functions are stored procedure, asp.net .. пожалуйста, пожалуйста, помогите для этого вопроса.

2 ответа

  1. Declare @Selected varchar(100)='Chennai'
    
    Select Stuff((Select Distinct ',' +ID  
     From (Select Top 999 ID=Upper(Left(@Selected,3))+Format(Row_Number() Over (Order By (Select null)),'000') From master..spt_values ) A
     For XML Path ('')),1,1,'') 
    

    Возвращается

     CHE001,CHE002,CHE003,CHE004,CHE005,CHE006,CHE007,CHE008,CHE009,CHE010,{...},CHE997,CHE998,CHE999
    

    Или если вам нужны строки

    Declare @Selected varchar(100)='Chennai'
    
    Select Top 999 ID=Upper(Left(@Selected,3))+Format(Row_Number() Over (Order By (Select null)),'000') From master..spt_values 
    

    Возвращается

    ID
    CHE001
    CHE002
    CHE003
    CHE004
    CHE005
    {...}
    CHE997
    CHE998
    CHE999
    
  2. Можно создать хранимую процедуру, подобную приведенной ниже:

    BEGIN
    DECLARE @CITY VARCHAR(MAX) = 'MUMBAI'
    DECLARE @CITYCODE VARCHAR(3) = SUBSTRING(@CITY,1,3)
    
    INSERT INTO TBL (ID)
    SELECT @CITYCODE + RIGHT('000' + CAST((CAST(REPLACE(ISNULL(MAX(ID),@CITYCODE + '000'),@CITYCODE,'') AS INT) + 1) AS VARCHAR),3)
    FROM TBL
    WHERE ID LIKE @CITYCODE + '%'
    END