【发布时间】:2012-04-05 11:33:50
【问题描述】:
我的数据库有问题。我有以下内容:
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)
UPDATE story
SET code = name_s + '-' + chars + '-' + book_ref_name + '-' + Convert(varchar(50), book_ref_nmbr)
WHERE code IS NULL
如何创建一个从 STORY 中选择 * 的 SELECT 语句,除了空字段。例如,如果一个故事没有争论者/艺术家,我不希望该领域出现。
例如:
select * from story where name_s = 'StoryName1' 的结果将是以下table 但因为这两个字段是 NULL 我希望它是这样的table
为了让最后一张桌子以这种方式显示,我这样做了select id,name_s,chars,code,book_ref_name,book_ref_nmbr from story where name_s = 'StoryName1'
我试图做这样的事情(这段代码显然不存在只是一个例子,试图更好地解释我)
select ""notnullcollumns"" from story where name_s = 'StoryName1'
【问题讨论】:
-
您只能使用一些疯狂的动态 SQL 来真正做到这一点……我认为您不会想要这样做。您要解决的问题是什么?
-
如果您选择了两行并且它们各有不同的列并具有
NULL值,您期望返回什么?还是你只会选择一行?! -
你想做什么
isnull(artist, '')不能? -
@MichaelFredrickson @SirCrispalot 我不假装会发生这种情况,我已经考虑过了,你说的就是想象这个
('StoryName1','StoryChars1',null,'John',default,'BookName1',13), ('StoryName2','StoryChars2',null,default,'Peter','BookName2',35),对吧?我想我通过使用where name_s = 'StoryName1'清除了这一点。现在,想象一下我将为此目的在每个select中使用where我该如何解决这个问题 -
我正在尝试做这样的事情(这段代码显然不存在只是一个试图更好地解释我的例子)
select ""notnullcollumns"" from story where name_s = 'StoryName1'
标签: sql sql-server-2008 select null except