上週和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當然 你可以可以 用多個 or 或者uion all 來 或者,動態sql 來拼接;*from product where productname like'%
'+'red'+
'%'select
*from product where productname like'%
'+'lights'+
'%'select
*from product where productname like'%
'+'star'+'%'
然後如果我增加,更過多的關鍵字呢,然後...........
我們可以考慮這樣做;建立乙個forsearch表,然後....
它會對相關聯的每一行都應用該函式;
我們先建立乙個函式
create然後我們將該函式,應用到 searchstring 表中的 string 欄位中的,每乙個值(行),並返回 於 searchstring 表相關聯;function
searchinfo
(
@keyword
varchar(100))
returns
table
---這裡是我們的returns ---不是 return 多了個s
asreturn
(
select
productname,
price
from
product
where productname like'%
'+@keyword+'
%')go
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...