2017-03-29 26 views
0

これは私のテーブルです:'xxx0000'、 'xxx0001'のようなID番号の生成方法は?

| ID | 
| xxx0000 | 
| xxx0001 | 
| xxx0002 | 

私はそのような私のIDパターンを作りたいが、私はそれを生成する方法を知りませんか?

+7

これをデータベースで自動インクリメントしたい場合は、 'ID'カラムを通常の自動インクリメントフィールドにして、追加するものが何であれ別のフィールドを持つことをお勧めします。その後、ビューまたはクエリで連結/書式設定を実行します。基本的には、基になるデータがそのデータの表示結果と正確に一致しなければならないというルールはありません。多くの場合、2つは非常に良い理由で異なるはずです。この場合、2つの異なるデータ要素で構成される単一の表示要素があります。 – David

+0

@Davidは、以下の質問のように、コメントの中の文字や言葉の数が多い場合には:-) – JustOnUnderMillions

+0

$ id = "xxx" .substr( "0000"。$ i、-4); –

答えて

3

2つの異なるデータがあるので、2つの異なる列を作成してください。

ID    INT   NOT NULL AUTO_INCREMENT, 
SomethingElse SomeOtherType NOT NULL 

SomethingElseという名前で、どのようなデータ型のそれはあなた次第だろうです。 xxxはあまり教えてくれません。

これらのものの両方があなたの主キーを構成する組み合わせた場合は、複数列の複合キーを使用することができます任意の主キーの同じ整合性チェックを適用していきます

PRIMARY KEY (SomethingElse, ID) 

を、データベースは単純になります両方の列に結合された一意性があるかどうかを確認します。この時点で

あなたは今、それはあなたが望むどのようそれを表示するだけの問題だ、あなたが望むデータを持っています。あなたがSQLで行うのか、PHPで行うのかはあなた次第です。アプリケーションがそれらを単一の値として見るか、根底にあるさまざまな値を参照するかどうかを指定します。

SQLから単一の値として選択するだけでも十分です。ような何か:あなたは常にそれらのパディングゼロにしたい場合

SELECT CONCAT(SomethingElse, ID) AS ID FROM ... 

そしてthis questionが役立ちます。あなたがやりたいかもしれない他の文字列の操作も、一度に1つずつ取り組まれます(それぞれのスタックオーバーフローの問題が発生する可能性があります)。

ここでの基本的な考え方は、の複合の値です。リレーショナルデータベースでは、一般にの値がの値を格納し、データを照会するときに構成を実行します。

関連する問題