亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? like.c

?? 關系型數據庫 Postgresql 6.5.2
?? C
字號:
/*------------------------------------------------------------------------- * * like.c *	  like expression handling code. * *	 NOTES *		A big hack of the regexp.c code!! Contributed by *		Keith Parks <emkxp01@mtcc.demon.co.uk> (7/95). * * Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION *	$Header: /usr/local/cvsroot/pgsql/src/backend/utils/adt/like.c,v 1.25.2.2 1999/09/07 19:12:16 tgl Exp $ * *------------------------------------------------------------------------- */#include "postgres.h"#include "mb/pg_wchar.h"#include "utils/builtins.h"static int	like(pg_wchar * text, pg_wchar * p);/* *	interface routines called by the function manager *//*   fixedlen_like:   a generic fixed length like routine		 s		- the string to match against  (not necessarily null-terminated)		 p		   - the pattern		 charlen   - the length of the string*/static boolfixedlen_like(char *s, struct varlena * p, int charlen){	pg_wchar   *sterm,			   *pterm;	int			result;	int			len;	if (!s || !p)		return FALSE;	/* be sure sterm is null-terminated */#ifdef MULTIBYTE	sterm = (pg_wchar *) palloc((charlen + 1) * sizeof(pg_wchar));	(void) pg_mb2wchar_with_len((unsigned char *) s, sterm, charlen);#else	sterm = (char *) palloc(charlen + 1);	StrNCpy(sterm, s, charlen + 1);#endif	/*	 * p is a text = varlena, not a string so we have to make a string	 * from the vl_data field of the struct.	 */	/* palloc the length of the text + the null character */	len = VARSIZE(p) - VARHDRSZ;#ifdef MULTIBYTE	pterm = (pg_wchar *) palloc((len + 1) * sizeof(pg_wchar));	(void) pg_mb2wchar_with_len((unsigned char *) VARDATA(p), pterm, len);#else	pterm = (char *) palloc(len + 1);	memmove(pterm, VARDATA(p), len);	*(pterm + len) = (char) NULL;#endif	/* do the regexp matching */	result = like(sterm, pterm);	pfree(sterm);	pfree(pterm);	return (bool) result;}boolnamelike(NameData *n, struct varlena * p){	if (!n)		return FALSE;	return fixedlen_like(n->data, p, NAMEDATALEN);}boolnamenlike(NameData *s, struct varlena * p){	return !namelike(s, p);}booltextlike(struct varlena * s, struct varlena * p){	if (!s)		return FALSE;	return fixedlen_like(VARDATA(s), p, VARSIZE(s) - VARHDRSZ);}booltextnlike(struct varlena * s, struct varlena * p){	return !textlike(s, p);}/***	Originally written by Rich $alz, mirror!rs, Wed Nov 26 19:03:17 EST 1986.**	Rich $alz is now <rsalz@bbn.com>.**	Special thanks to Lars Mathiesen <thorinn@diku.dk> for the LABORT code.****	This code was shamelessly stolen from the "pql" code by myself and**	slightly modified :)****	All references to the word "star" were replaced by "percent"**	All references to the word "wild" were replaced by "like"****	All the nice shell RE matching stuff was replaced by just "_" and "%"****	As I don't have a copy of the SQL standard handy I wasn't sure whether**	to leave in the '\' escape character handling.****	Keith Parks. <keith@mtcc.demon.co.uk>****	[SQL92 lets you specify the escape character by saying**	 LIKE <pattern> ESCAPE <escape character>. We are a small operation**	 so we force you to use '\'. - ay 7/95]***/#define LIKE_TRUE						1#define LIKE_FALSE						0#define LIKE_ABORT						-1/*-------------------- *	Match text and p, return LIKE_TRUE, LIKE_FALSE, or LIKE_ABORT. * *	LIKE_TRUE: they match *	LIKE_FALSE: they don't match *	LIKE_ABORT: not only don't they match, but the text is too short. * * If LIKE_ABORT is returned, then no suffix of the text can match the * pattern either, so an upper-level % scan can stop scanning now. *-------------------- */static intDoMatch(pg_wchar * text, pg_wchar * p){	for (; *p && *text; text++, p++)	{		switch (*p)		{			case '\\':				/* Literal match with following character. */				p++;				/* FALLTHROUGH */			default:				if (*text != *p)					return LIKE_FALSE;				break;			case '_':				/* Match any single character. */				break;			case '%':				/* %% is the same as % according to the SQL standard */				/* Advance past all %'s */				while (*p == '%')					p++;				/* Trailing percent matches everything. */				if (*p == '\0')					return LIKE_TRUE;				/* Otherwise, scan for a text position at which we				 * can match the rest of the pattern.				 */				for (; *text; text++)				{					/* Optimization to prevent most recursion: don't recurse					 * unless first pattern char might match this text char.					 */					if (*text == *p || *p == '\\' || *p == '_')					{						int	matched = DoMatch(text, p);						if (matched != LIKE_FALSE)							return matched;	/* TRUE or ABORT */					}				}				/* End of text with no match, so no point in trying later				 * places to start matching this pattern.				 */				return LIKE_ABORT;		}	}	if (*text != '\0')		return LIKE_FALSE;		/* end of pattern, but not of text */	/* End of input string.  Do we have matching pattern remaining? */	while (*p == '%')			/* allow multiple %'s at end of pattern */		p++;	if (*p == '\0')		return LIKE_TRUE;	/* End of text with no match, so no point in trying later	 * places to start matching this pattern.	 */	return LIKE_ABORT;}/***	User-level routine.  Returns TRUE or FALSE.*/static intlike(pg_wchar * text, pg_wchar * p){	/* Fast path for match-everything pattern */	if (p[0] == '%' && p[1] == '\0')		return TRUE;	return DoMatch(text, p) == LIKE_TRUE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美国产三级| 国产欧美日本一区视频| 色综合天天综合给合国产| 国产精品影视天天线| 蜜臀久久久久久久| 免费成人在线网站| 老司机午夜精品99久久| 麻豆国产精品视频| 久久99国产精品尤物| 精品一区二区三区视频在线观看| 麻豆91免费观看| 精品一区二区在线观看| 国产制服丝袜一区| 粉嫩蜜臀av国产精品网站| 成人激情视频网站| 色偷偷成人一区二区三区91 | 国产91精品精华液一区二区三区| 精品一区免费av| 成人自拍视频在线观看| 99riav一区二区三区| 欧美在线制服丝袜| 欧美一级视频精品观看| 久久人人97超碰com| 国产精品久线在线观看| 一区二区三区在线免费观看| 五月天国产精品| 国产一区二区剧情av在线| 97精品视频在线观看自产线路二| 欧美日韩成人一区| www精品美女久久久tv| 欧美国产日韩a欧美在线观看 | 欧美久久久一区| 欧美一级二级在线观看| 国产片一区二区| 亚洲综合一区二区| 美女精品自拍一二三四| 99久久精品一区二区| 日韩视频免费直播| 国产精品嫩草影院av蜜臀| 天堂av在线一区| 国产91在线|亚洲| 这里只有精品99re| 日韩一区欧美一区| 免费在线看一区| 成人av综合在线| 日韩欧美一区二区久久婷婷| 国产精品国产三级国产三级人妇 | 色中色一区二区| 久久影视一区二区| 日日夜夜精品视频免费| 成年人网站91| 精品国产一区二区三区av性色| 亚洲精品中文在线| 国产精品99久久久久久久女警| 欧美系列亚洲系列| 国产精品久久久久天堂| 久久成人av少妇免费| 欧美三级视频在线播放| 日韩理论电影院| 国产成人福利片| 精品成人在线观看| 美女视频一区二区三区| 欧美午夜宅男影院| 一区二区三区在线视频观看 | 日韩国产精品久久久| aaa亚洲精品| 国产情人综合久久777777| 九九九久久久精品| 欧美变态tickle挠乳网站| 亚洲3atv精品一区二区三区| 在线观看日韩精品| 亚洲精品国产品国语在线app| 成人网页在线观看| 国产精品护士白丝一区av| 懂色一区二区三区免费观看| 国产午夜精品理论片a级大结局| 久久99日本精品| 日韩欧美国产三级电影视频| 青草国产精品久久久久久| 884aa四虎影成人精品一区| 日韩中文字幕区一区有砖一区| 在线视频欧美区| 亚洲成人激情自拍| 欧美一区二区私人影院日本| 日韩国产高清在线| 日韩欧美激情四射| 国产精品综合网| 日本一区二区久久| 91同城在线观看| 一区二区三区在线视频免费观看| 欧美色国产精品| 蜜乳av一区二区| 精品久久久久久久久久久久久久久 | 欧美激情在线观看视频免费| 成人久久久精品乱码一区二区三区 | 欧美激情在线免费观看| 99久久99精品久久久久久| 亚洲在线中文字幕| 欧美电影免费观看高清完整版在线观看 | 国内精品伊人久久久久av影院 | 欧美体内she精高潮| 日本最新不卡在线| 欧美国产禁国产网站cc| 在线视频综合导航| 美女久久久精品| 国产精品美日韩| 欧美日韩国产一级| 国产·精品毛片| 亚洲一区中文在线| 久久综合九色综合97_久久久| av一二三不卡影片| 日本aⅴ亚洲精品中文乱码| 国产日韩av一区二区| 欧美午夜精品一区二区三区| 久久电影国产免费久久电影| 亚洲欧美激情一区二区| 欧美成人免费网站| 色婷婷av一区二区三区gif| 精品一区二区精品| 一区二区三区影院| 久久夜色精品一区| 337p亚洲精品色噜噜噜| 99riav久久精品riav| 国产做a爰片久久毛片 | 91麻豆精品国产91久久久使用方法| 久久er精品视频| 亚洲国产精品一区二区尤物区| 26uuu精品一区二区在线观看| 91国偷自产一区二区三区观看| 国模套图日韩精品一区二区| 午夜精品久久久久久久99樱桃 | 91成人在线精品| 粉嫩aⅴ一区二区三区四区| 日韩高清国产一区在线| 亚洲婷婷综合色高清在线| 亚洲精品一区二区在线观看| 欧美视频一二三区| 成人久久久精品乱码一区二区三区| 久久电影国产免费久久电影| 亚洲sss视频在线视频| 亚洲欧美另类小说视频| 国产精品理论在线观看| 久久久亚洲高清| 久久老女人爱爱| 欧美不卡在线视频| 日韩午夜三级在线| 91精品国产色综合久久不卡电影| 色先锋资源久久综合| 99re视频精品| 99视频一区二区三区| 99久久99精品久久久久久| 成人激情免费电影网址| 成人av网址在线| 高清视频一区二区| av在线免费不卡| 99久久国产综合精品麻豆| 99久久国产免费看| 色婷婷久久99综合精品jk白丝| 99国产精品久久久久久久久久 | 91色视频在线| 91福利视频网站| 欧美三电影在线| 欧美日韩高清在线| 日韩精品一区二| 国产欧美日产一区| 亚洲免费大片在线观看| 一级女性全黄久久生活片免费| 亚洲毛片av在线| 午夜精品久久久久久久久久久| 免费在线观看一区| 国产一区999| 波多野结衣在线aⅴ中文字幕不卡| 国产91色综合久久免费分享| 91在线一区二区| 欧美日韩久久不卡| 精品电影一区二区| 亚洲视频一区二区在线| 亚洲中国最大av网站| 日韩vs国产vs欧美| 国产麻豆视频一区| 色婷婷久久久亚洲一区二区三区| 欧美精品xxxxbbbb| 久久精品一区二区三区不卡| 亚洲精品欧美激情| 另类调教123区| 99国产精品99久久久久久| 欧美美女一区二区在线观看| 久久亚洲二区三区| 亚洲一区二区三区不卡国产欧美 | 国产精品乱码人人做人人爱| 亚洲黄网站在线观看| 极品美女销魂一区二区三区免费| 不卡一区二区中文字幕| 欧美人妇做爰xxxⅹ性高电影| 久久综合九色综合97婷婷女人| 亚洲一区二区在线观看视频| 国产乱一区二区| 欧美日韩精品欧美日韩精品一| 国产女主播一区| 日本亚洲三级在线|