1

私はテーブルを持っています

CREATE TABLE #Agency 
 (
  AgencyID int PRimary KEY IDENTITY(1,1),
  AgencyName varchar(100), 
  AgencyCode varchar(50)
  )

テーブルに挿入するときに一意の代理店コードを生成したい...代理店コードはアルファベットのみで構成する必要があります..数字や特殊文字は使用できません

ありがとうございました

4

2 に答える 2

3

ID を varchar にキャストし、すべての数字を文字 (または組み合わせ) に置き換えるという簡単なことを行うことができます。

1=A、2=B など。

したがって、ID が一意である限り、コードも一意になります。

スニペットは次のようになります。

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    CAST(AgencyID AS VARCHAR(50))
    ,'1','A'),'2','B'),'3','C'),'4','D'),'5','E'),'6','F'),'7','G'),'8','H'),'9','I'),'0','J')

挿入中に実行したい場合は、 IDENT_CURRENT('tablename') を使用して、ID 列に挿入する値を取得できます。

      INSERT INTO Agency (AgencyName, AgencyCode)
    SELECT 'Name001', 
              REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
              CAST(IDENT_CURRENT('Agency') AS VARCHAR(50))
              ,'1','A'),'2','B'),'3','C'),'4','D'),'5','E'),'6','F'),'7','G'),'8','H'),'9','I'),'0','J')

;

SQLFiddle デモ

数値を文字列や計算列に変換する関数を作成すると、より使いやすくなる場合があります。

関数と計算列を使用したデモ

編集:

少なくとも 5 文字列の長い文字を作成するように要求が更新された DEMO

于 2013-04-25T10:56:33.127 に答える
1

アプリケーションで文字列を生成することをお勧めします。そうすれば、T-SQL よりも手続き型コードに適した言語を使用できます。とにかく、可能であればロジックを SQL Server から除外することをお勧めします。

于 2013-04-25T11:01:08.850 に答える