T SQL中的APPLY用法

2022-01-22 15:00:20 字數 2667 閱讀 6611

上週和team leader 討論問題的時候,

sql 指令碼準備;

if

object_id('

dbo.product

') is

notnull

drop

table

dbo.product;

ifobject_id('

dbo.searchstring

') is

notnull

drop

table

dbo.searchstring;

ifobject_id('

dbo.findproductlike

') is

notnull

drop

function

dbo.findproductlike;

create

table

dbo.product

( id

intidentity

, productnamevarchar(

100) ,

price

money

);

insert

into

dbo.product

values ( '

red santasuit

', 199.99

),

( 'candy canes

', 1.99

),

( 'fake snow

', 2.99

),

( 'red bells

', 49.99

),

( 'led lights

', 6.99

);

create

table

dbo.searchstring

( id

intidentity

, string

varchar(100

) );

insert

into

dbo.searchstring

values ( '

red'

),

( 'lights

'),

( 'star

');

go

還記得模糊查詢吧,如果,我們定義查詢的關鍵字為:

red
lights
star
我們的sql可能會這麼寫;

select

*from product where productname like'%

'+'red'+

'%'select

*from product where productname like'%

'+'lights'+

'%'select

*from product where productname like'%

'+'star'+'%'

當然 你可以可以 用多個 or 或者uion all 來 或者,動態sql 來拼接;

然後如果我增加,更過多的關鍵字呢,然後...........

我們可以考慮這樣做;建立乙個forsearch表,然後....

它會對相關聯的每一行都應用該函式;

我們先建立乙個函式

create

function

searchinfo

(

@keyword

varchar(100))

returns

table

---這裡是我們的returns ---不是 return 多了個s

asreturn

(

select

productname,

price

from

product

where productname like'%

'+@keyword+'

%')go

然後我們將該函式,應用到  searchstring 表中的  string 欄位中的,每乙個值(行),並返回  於 searchstring 表相關聯;

select

*from searchstring as

s結果:

也就是我們的star 會別列出來,

效果如圖:

我們也可以直接這樣寫:

select

*from searchstring as

scross

(

select

productname, price

from

product

where productname like'%

'+ s.string +'%

') as x

完美,再見,下班,回家

這邊文章,基本是按照文獻寫的,但是看了之後,梳理思路,自己再寫一遍,效果會很好滴呀;

DataFrame中apply的用法

函式應用和對映 import numpy as np import pandas as pd df pd.dataframe np.random.randn 4,3 columns list bde index utah ohio texas oregon print df b d e utah 0...

T SQL中Case的用法

case語句是條件判斷語句的一種,可以完成比if語句更強的判斷,可以解決if語句中巢狀過多的問題。語法 case when 條件a then 結果a when 條件b 結果b else 結果n end 和decode 不同的是,decode 只能針對固定的值,而 case 可以用不是固定值,需是乙個...

pandas中apply 函式的用法

下面是 例子 import pandas as pd import datetime 用來計算日期差的包 def datainterval data1,data2 d1 datetime.datetime.strptime data1,y m d d2 datetime.datetime.strpt...