MyException - 我的异常网
当前位置:我的异常网» SQL » 杞細SQL LIKE璇彞澶氭潯浠惰椽濠姞鏉冨尮閰?

杞細SQL LIKE璇彞澶氭潯浠惰椽濠姞鏉冨尮閰?鏂板蹇呰璇嶆寚瀹

www.MyException.Cn  网友分享于:2013-12-30  浏览:0次
杞細SQL LIKE璇彞澶氭潯浠惰椽濠姞鏉冨尮閰?鏂板蹇呰璇嶆寚瀹?

鍘熸枃杞浇鑷細http://blog.csdn.net/yangyuankp/article/details/8085460

涓轰簡鏇村ソ鐨勬墿鍏呮湰绠楁硶鐨勯€傜敤鑼冨洿锛岀壒鍔犲叆蹇呰鍏抽敭璇嶆寚瀹氬姛鑳?/span>銆?br>
鍦ㄥ疄闄呭簲鐢ㄤ腑锛屽緢鍙兘甯屾湜鍖归厤鐨勬椂鍊欏繀椤诲嚭鐜版煇涓瘝锛屽惁鍒欏氨鏄病鏈夋剰涔夌殑鍖归厤銆?br>
璇村埌杩欙紝璇昏€呭彲鑳借寰楄繖浜涢渶姹傚皬棰樺ぇ鍋氾紝鍦ㄧ▼搴忎腑鐢ㄦ鍒欒〃杈惧紡寰堝鏄撳疄鐜帮紝鍐嶆閲嶇敵锛岀幇鍦ㄧ殑鐭涚浘鏄垜浠笉鑳芥妸璁板綍杩斿洖鍒扮▼搴忎腑澶勭悊锛屽洜涓烘秹鍙婂埌澶ф暟鎹噺锛屽繀椤昏€冭檻鏈嶅姟鍣ㄦ壙鍙楄兘鍔涖€佸苟鍙戣闂暟閲忋€佺綉缁滀紶杈撹兘鍔涖€佺▼搴忓鐞嗚兘鍔涚瓑璇稿鍥犵礌銆傚湪鏈嶅姟鍣ㄧ灏介噺缂╁皬鏁版嵁鑼冨洿锛屽噺灏戞暟鎹紶杈撻噺锛屾棤鐤戞槸鏈€浣抽€夋嫨銆?br>
杩欎釜鐗堟湰鍔犲叆鐨勬柊鐗规€у嵆蹇呰鍏抽敭璇嶆寚瀹氾紝鍚屾牱鎷库€滃浣曞湪CSDN缃戠珯娉ㄥ唽鐢ㄦ埛鈥濊繖鍙ヨ瘽鏉ヨ锛屸€淐SDN鈥濊繖涓瘝鍙互璁や负鏄繀瑕佽瘝锛屽洜涓哄畠鏄墠鎻愶紝璇曟兂浣犲湪鎼滅储鈥滃浣曞湪CSDN缃戠珯娉ㄥ唽鐢ㄦ埛鈥濇椂锛屽嵈鍑虹幇浜嗏€滃浣曞湪缃戞槗娉ㄥ唽鐢ㄦ埛鈥濓紝鏄剧劧鏄鏃犳剰涔夌殑缁撴灉銆?br>
浜嬪疄浜﹀姝わ紝鍦扮悆浜轰篃鏄繖涔堝仛鐨勶紝鍦ㄧ櫨搴︽悳鈥滃浣曞湪CSDN缃戠珯娉ㄥ唽鐢ㄦ埛鈥濓紝鎶婄粨鏋滀粠绗竴椤电炕鍒版渶鍚庝竴椤碉紝鍙互鍙戠幇姣忎竴涓粨鏋滀腑閮藉彲浠ユ壘鍒扳€淐SDN鈥濆瓧鐪笺€?br>
鍏跺疄锛屽ぇ澶氭暟鎯呭喌涓嬶紝閫氳繃璐┆鍔犳潈鍖归厤锛屽凡缁忓彲浠ュ疄鐜伴潪甯搁噸瑕佺殑璇嶁€滃繀鐒垛€濆嚭鐜帮紝浣嗘湁鏃跺€欓渶瑕佸仛涓€涓繚璇侊紝璁╃粨鏋滄洿鍔犲悎鐞嗐€?/span>

SQLLIKE璇彞澶氭潯浠惰椽濠姞鏉冨尮閰?鏂板蹇呰璇嶅姛鑳?锛?/p>

GO
CREATE function Get_StrArrayLength
(
 @str varchar(1024),  --瑕佸垎鍓茬殑瀛楃涓?
 @split varchar(10)  --鍒嗛殧绗﹀彿
)
returns int
as
 begin
  declare @location int
  declare @start int
  declare @length int
  set @str=ltrim(rtrim(@str))
  set @location=charindex(@split,@str)
  set @length=1
   while @location<>0
     begin
      set @start=@location+1
      set @location=charindex(@split,@str,@start)
      set @length=@length+1
     end
   return @length
 end
 GO
 CREATE function Get_StrArrayStrOfIndex
(
 @str varchar(1024),  --瑕佸垎鍓茬殑瀛楃涓?
 @split varchar(10),  --鍒嗛殧绗﹀彿
 @index int --鍙栫鍑犱釜鍏冪礌
)
returns varchar(1024)
as
begin
 declare @location int
 declare @start int
 declare @next int
 declare @seed int
 set @str=ltrim(rtrim(@str))
 set @start=1
 set @next=1
 set @seed=len(@split)
 set @location=charindex(@split,@str)
 while @location<>0 and @index>@next
   begin
    set @start=@location+@seed
    set @location=charindex(@split,@str,@start)
    set @next=@next+1
   end
 if @location =0 select @location =len(@str)+1
 
--杩欏効瀛樺湪涓ょ鎯呭喌锛?銆佸瓧绗︿覆涓嶅瓨鍦ㄥ垎闅旂鍙?2銆佸瓧绗︿覆涓瓨鍦ㄥ垎闅旂鍙凤紝璺冲嚭while寰幆鍚庯紝@location涓?锛岄偅榛樿涓哄瓧绗︿覆鍚庤竟鏈変竴涓垎闅旂鍙枫€?
 return substring(@str,@start,@location-@start)
end
GO
CREATE PROCEDURE proc_Common_SuperLike
	--瑕佹煡璇㈢殑琛ㄧ殑涓婚敭瀛楁鍚嶇О
	@primaryKeyName varchar(999),
	--瑕佹煡璇㈢殑琛ㄥ悕
	@talbeName varchar(999),
	--瑕佹煡璇㈢殑琛ㄧ殑瀛楁鍚嶇О锛屽嵆鍐呭鎵€鍦ㄧ殑瀛楁
	@contentFieldName varchar(999),
	--鏌ヨ璁板綍鐨勪釜鏁?TOP *),鍖归厤鐨勪釜鏁拌秺澶?鎺掑悕瓒婇潬鍓?
	@selectNumber varchar(999),
	--鍖归厤瀛楃鍒嗛殧鏍囪
	@splitString varchar(999),
	--鍖归厤瀛楃缁勫悎瀛楃涓?
	@words varchar(999)
	
AS
	declare @sqlFirst varchar(999)
	declare @sqlCenter varchar(999)
	declare @sqlLast varchar(999)
	declare @next int  
	declare @arrayLength int
	declare @newWords varchar(999)
	declare @newTable varchar(999)
BEGIN
	set @newTable=@talbeName
	set @newWords=@words
	set @next=dbo.Get_StrArrayLength(@words,'[')
	--鍒ゆ柇鏄惁鏈夊繀瑕佽瘝
	if @next>1
	begin
		set @newTable=''
		--鏋勯€犲繀瑕佽〃sql璇彞
		while @next>1
		begin
			set @newTable=@newTable+@contentFieldName+' like ''%'+dbo.Get_StrArrayStrOfIndex(dbo.Get_StrArrayStrOfIndex(@words,'[',@next),']',1)+'%'' AND '
			set @next=@next-1
		end
		set @newTable=left(@newTable,(len(@newTable)-4))
		--鏋勯€犱复鏃惰〃
		set @newTable='SELECT * into ##tempTable FROM '+ @talbeName + ' WHERE ' + @newTable
		execute(@newTable)
		--鎸囧畾涓存椂琛?
		set @newTable='##tempTable'
		--鍘绘帀鍏抽敭璇嶇粍涓殑蹇呰璇嶆爣璁?
		set @newWords=REPLACE(REPLACE(@words,'[',''),']','')
	end
	set @sqlCenter=''
	set @next=1
	set @arrayLength=dbo.Get_StrArrayLength(@newWords,@splitString)

	while @next<=@arrayLength
	begin
		--鏋勯€爏ql鏌ヨ鏉′欢(涓棿閮ㄥ垎)
		set @sqlCenter = @sqlCenter+'SELECT '+@primaryKeyName+','+CONVERT(varchar(999),@arrayLength-@next+1)+' AS wordPower FROM '+@newTable+' WHERE '+@contentFieldName+' like ''%'+dbo.Get_StrArrayStrOfIndex(@newWords,@splitString,@next)+'%'' UNION ALL '
		set @next=@next+1
	end
	--澶勭悊sql璇彞涓棿閮ㄥ垎,鍘婚櫎鏈€鍚庢棤鐢ㄨ鍙?
	set @sqlCenter=left(@sqlCenter,(len(@sqlCenter)-10))
	--鏋勯€爏ql璇彞寮€澶撮儴鍒?
	set @sqlFirst='SELECT TOP '+@selectNumber+' '+@primaryKeyName+',COUNT(*)+SUM(wordPower) AS finalPower FROM ('
	--鏋勯€爏ql璇彞缁撳熬閮ㄥ垎
	set @sqlLast=') AS t_Temp GROUP BY '+@primaryKeyName+' ORDER BY finalPower DESC'
	--鎷兼帴鍑哄畬鏁磗ql璇彞,骞舵墽琛?
	Execute(@sqlFirst+@sqlCenter+@sqlLast)
	--鍒ゆ柇涓存椂琛ㄦ槸鍚﹀瓨鍦紝瀛樺湪鍒欏垹闄わ紝涓€瀹氳鍒犻櫎锛?
	if OBJECT_ID('tempDb..##tempTable') is not null
	begin
		drop table ##tempTable
	end
END

璋冪敤鏂规硶鍩烘湰涓嶅彉(鍙傛暟涓暟鏈彉)锛?/p>

execute proc_Common_SuperLike'id','t_test','content','20','|','[i]|o|c'

鏂扮壒鎬ц鏄?/strong>锛?br>瀹氫箟锛氭妸蹇呴』瑕佸嚭鐜扮殑鍏抽敭璇嶇敤鏂规嫭鍙穂]鎷捣鏉ャ€備緥濡俒i]|o|c锛屽垯i鍦ㄧ粨鏋滀腑蹇呴』鍑虹幇銆?br>
璇存槑锛氬亣濡傞渶瑕佸尮閰峚銆乥銆乧涓変釜鍏抽敭璇嶏紝閲嶈鎬э細a>b>c锛岄偅涔堝彲浠ヨ繖鏍峰啓锛歛|b|c锛岃繖鏍峰凡缁忎繚璇乤銆乥銆乧鐨勬潈閲嶄緷娆¢檷浣庯紝璐┆鍔犳潈鐨勭畻娉曞熀鏈彲浠ヤ繚璇侊細灏藉彲鑳藉鐨勫幓鍖归厤銆佸敖鍙兘鍖归厤鍖呭惈a鐨勮褰曘€備絾鏄煇浜涙椂鍊欎负浜嗘彁楂樺噯纭€э紝瑕佹眰缁撴灉涓繀椤诲嚭鐜癮锛岄偅涔堝彲浠ヨ繖鏍峰啓锛歔a]|b|c銆傚悓鐞嗭紝蹇呴』鍑虹幇a銆乥鍙互杩欐牱鍐欙細[a]|[b]|c銆?br>
鍏朵粬锛氭娆℃洿鏂板姞鍏ヤ簡涓存椂琛ㄦ妧鏈紝淇濊瘉蹇呰鍏抽敭璇嶆寚瀹氭晥鐜囥€?/p>

文章评论

为什么程序员都是夜猫子
为什么程序员都是夜猫子
10个调试和排错的小建议
10个调试和排错的小建议
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Java程序员必看电影
Java程序员必看电影
我的丈夫是个程序员
我的丈夫是个程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员必看的十大电影
程序员必看的十大电影
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
那些争议最大的编程观点
那些争议最大的编程观点
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
老程序员的下场
老程序员的下场
一个程序员的时间管理
一个程序员的时间管理
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员应该关注的一些事儿
程序员应该关注的一些事儿
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
中美印日四国程序员比较
中美印日四国程序员比较
旅行,写作,编程
旅行,写作,编程
编程语言是女人
编程语言是女人
总结2014中国互联网十大段子
总结2014中国互联网十大段子
程序员都该阅读的书
程序员都该阅读的书
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
漫画:程序员的工作
漫画:程序员的工作
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
代码女神横空出世
代码女神横空出世
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员和编码员之间的区别
程序员和编码员之间的区别
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
如何成为一名黑客
如何成为一名黑客
程序员的鄙视链
程序员的鄙视链
我是如何打败拖延症的
我是如何打败拖延症的
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
鲜为人知的编程真相
鲜为人知的编程真相
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有