很多人知道isnull函式,但是很少人知道coalesce函式,人們會無意中使用到coalesce函式,並且發現它比isnull更加強大,其實到目前為止,這個函式的確非常有用,本文主要講解其中的一些基本使用:
返回其引數中第乙個非空表示式
coalesce ( expression [ ,...n ] )如果所有引數均為 null,則 coalesce 返回 null。至少應有乙個 null 值為 null 型別。儘管 isnull 等同於 coalesce,但它們的行為是不同的。包含具有非空引數的 isnull 的表示式將視為 not null,而包含具有非空引數的 coalesce 的表示式將視為 null。在 sql server 中,若要對包含具有非空引數的 coalesce 的表示式建立索引,可以使用 persisted 列屬性將計算列持久化,如以下語句所示:
[sql]view plain
copy
create table #checksumtest
( id int identity ,
num int default ( rand() * 100 ) ,
rowchecksum as coalesce( checksum( id , num ) , 0 ) persisted primary key
);
[sql]view plain
copy
select coalesce(null, null, getdate())
由於兩個引數都為null,所以返回getdate()函式的值,也就是當前時間。即返回第乙個非空的值。由於這個函式是返回第乙個非空的值,所以引數裡面必須最少有乙個非空的值,如果使用下面的查詢,將會報錯:
[sql]view plain
copy
select coalesce(null, null, null)
[sql]view plain
copy
select name
from humanresources.department
where ( groupname= 'executive generaland administration' )
會得到下面的結果:
[sql]view plain
copy
declare @departmentname varchar(1000)
select @departmentname = coalesce(@departmentname, '') + name + ';'
from humanresources.department
where ( groupname= 'executive generaland administration' )
select @departmentname as departmentnames
當你知道這個函式可以進行扭轉之後,你也應該知道它可以執行多條sql命令。並且使用分號來區分獨立的操作。下面語句是在person架構下,有名字為name的列的值:
[sql]view plain
copy
declare @sql varchar(max)
create table #tmp
(clmn varchar(500),
val varchar(50))
select @sql=coalesce(@sql,'')+cast('insert into #tmp select ''' + table_schema + '.' + table_name + '.'
+ column_name + ''' as clmn, name from ' + table_schema + '.[' + table_name +
'];' as varchar(max))
from information_schema.columns
join sysobjects b on information_schema.columns.table_name = b.name
where column_name = 'name'
and xtype = 'u'
and table_schema = 'person'
print @sql
exec(@sql)
select * from #tmp
drop table #tmp
[sql]view plain
copy
declare @sql varchar(8000)
select @sql = coalesce(@sql, '') + 'kill ' + cast(spid as varchar(10)) + '; '
from sys.sysprocesses
where dbid = db_id('adventureworks')
print @sql --exec(@sql) replace the print statement with exec to execute
結果如下:
然後你可以把結果複製出來,然後一次性殺掉所有session。
qt4 0乙個非常有用的類QSettings
qt4.0乙個非常有用的類qsettings qsettings是qt4.0提供的乙個讀取配置檔案的類,在windows平台,它提供了ini檔案讀些,登錄檔讀寫的功能。我就簡單點隨便介紹介紹它的使用吧 qsettings format有兩種 qsettings nativeformat在window...
qt4 0乙個非常有用的類QSettings
qt4.0乙個非常有用的類qsettings qsettings是qt4.0提供的乙個讀取配置檔案的類,在windows平台,它提供了ini檔案讀些,登錄檔讀寫的功能。而且使用也非常簡單。大家可以參照它的示例 qtdirexamplestoolssettingseditor 我就簡單點隨便介紹介紹它...
兩個常用的非常有用excel函式
list 查詢函式 vlookup lookup value,array,columindexnum,ranglookup list 有如圖所示資料,我們要查詢相對a1的c1 vlookup a1,a1 c6,3,false 結果為c1.a1是我們要查詢的值。a1 c6,查詢的範圍。3,相對於a1偏...