2012-03-20 13 views
0

私のデータベースに問題があります。私はfolowingています値を別の文字列に置き換える

create table book 
(
    name_b varchaR(50) primary key, 
    typee varchaR(50) not null, 
    nmbr integer unique not null, 
    yeare numeric(4,0) default null, 
) 

create table story 
(
    id integer identity(1,1) primary key, 
    name_s varchar(100) not null, 
    chars varchar(100) not null, 
    code varchaR(200) null, 
    artist varchar(100) default null, 
    argument varchar(100) default null, 
    book_ref_name varchar(50) references book(name_b), 
    book_ref_nmbr integer references book(nmbr) 
) 

insert into story values 
('StoryName1','StoryChars1',null,default,default,'BookName1',13), 
('StoryName2','StoryChars2',null,default,default,'BookName2',35), 
('StoryName3','StoryChars3',null,default,default,'BookName3',125) 

insert into book values 
('BookName1','Type1',13,default), 
('BookName2','Type2',35,default), 
('BookName3','Type3',125,default) 

を私はこれで何をしたい、たとえばNULLから文字列の接合部に交換するSTORY.CODEはSTORYテーブルの最初のエントリを想像さ

('StoryName1','StoryChars1',null,default,default,'BookName1',13) 

にこの場合、STORY.CODEを 'StoryName1-StoryChars1-BookName1-13'に置き換えてください。

これも可能ですか?もしそれが何か類似したものの最も近い可能性がないならば?事前に THX


私が持っているもう一つの疑問は、どのように私はヌルフィールドを除くSTORYから*を選択し、SELECT文を作ることができます。たとえば、ストーリーに議論家/アーティストがいない場合、そのフィールドを表示したくない場合などです。あなたはINSERT経由UPDATE

UPDATE story 
SET code = name_s + '-' + chars + '-' + book_ref_name + '-' + Convert(varchar(50), book_ref_nmbr) 
WHERE code IS NULL 

を経由してこれを実行したい場合は

答えて

1

あなたは、基本的には似たような操作を行います。

INSERT INTO story (fields,....) 
SELECT 'StoryName1' 
    ,'StoryChars1' 
    ,IsNull(('StoryName1' + '-' + 'StoryChars1'+ '-' + 'BookName1' + '-' + Convert(varchar(50), 13), codevalue) 
    ,default,default,'BookName1',13 

それともCASE

INSERT INTO story (fields,....) 
SELECT 'StoryName1' 
    ,'StoryChars1' 
    , CASE 
     WHEN code Is Null 
      THEN ('StoryName1' + '-' + 'StoryChars1'+ '-' + 'BookName1' + '-' + Convert(varchar(50), 13) 
      ELSE yourcodevalue 
     END 
    ,default,default,'BookName1',13 

Asを使用することができますあなたの第二の質問はSELECTは、私は、これはあなたが私はあなたが1つの結果にいくつかのフィールドを連結するために探しているかもしれないと思うあなたのフィードバックに基づいて

SELECT * 
FROM story 
WHERE artist is not Null 
AND/OR argument is not Null 
+0

は魅力のように働きました。これを行うことは可能ですか?イニシャルだけで可能ですか? BookName1のようにBN1になりますか?そして最後に他の質問はどうですか?あなたはそれについてどう思いますか?= –

+1

@FabioAbreuあなたは挿入/選択に必要な値を置くことができます。私はあなたの2番目の質問に私の答えを更新し、あなたの2番目の質問に関しては第一1 – Taryn

+0

に答え、私はそれを投稿します答えられるもう一つの質問。 SOの天才があなたを助けることができます。 –

0
Select CONCAT(artist, argument, etc) as joinedField 
FROM Story 

必要なものだと思います。あなたがヌルを気に入るようにしたいのであれば、そこにいくつかの条件付き基準を置くことができるはずです。

参考: http://www.1keydata.com/sql/sql-concatenate.html

+0

私は*フィールドを除いて*を選択することを意味しました。アーティストや引数主義者がnullでないとき*を選択しないでください。 –

+0

null値が返されることは望ましくないのに、その行はまだ必要ですか?あなたはその結果で何をしようとしていますか? select文から複数のフィールドを1つの文字列にまとめようとしていますか?もしそうなら、それは実行可能でなければならない。 – jheep

+0

これは 'select * from story where name_s = 'StoryName1''です。この選択をしたいのですが、既存のnullフィールドを選択したくないのですが –

関連する問題