当前位置: 编程技术>移动开发
本页文章导读:
▪group_concat有长度限制 group_concat有长度限制!
长度陷阱用了group_concat后,select里如果使用了limit是不起作用的.用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。使用group_con.........
▪ 会合(二)——集合家族 集合(二)——集合家族
一.集合家族
1.NSArray
NSArray是一个Cocoa类,用来存储对象的有序列表,
限制:a.只能存储Objective-C的对象,而不能存储C语言中的基本数据类型,如int,float,enum,struct或.........
▪ 聚合 (一)——NSString 集合 (一)——NSString
Cocoa由两个框架组成:FoundationKit和ApplicationKit。
ApplicationKit:存放了所有的用户接口对象和高级类
FoundationKit:有许多实用的面向数据的低级类和数据类型。
此框架.........
[1]group_concat有长度限制
来源: 互联网 发布时间: 2014-02-18
group_concat有长度限制!
长度陷阱
用了group_concat后,select里如果使用了limit是不起作用的.
用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。
使用group_concat_max_len系统变量,你可以设置允许的最大长度。
程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度,则结果被截至这个最大长度。
在SQLyog中执行 SET GLOBAL group_concat_max_len = 10 后,重新打开SQLyog,设置就会生效。
---------------------------
GROUP_CONCAT将某一字段的值按指定的字符进行累加,系统默认的分隔符是逗号,可以累加的字符长度为1024字节。可以对这些参数进行修改。
1.先举一个简单的例子
select group_concat(f_a) from t_one group by f_b;
按f_b进行分组查询,将每组中的f_a进行累加。
2.修改默认的分隔符
select group_concat(f_a separator '_') from t_one group by f_b;
separator 是一个关键字,后面跟着要进行分隔的字符
3.排序
select group_concat(f_a order by f_a separator '_') from t_one group by f_b;
4.修改默认字符大小
1).在MySQL配置文件中加上
group_concat_max_len = 102400 #你要的最大长度
2).可以简单一点,执行语句,可以设置作用范围
SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;
5.和concat使用
group_concat默认返回的是BLOB大对象,可以使用concat,返回字符串,还可以在返回的内容,在加入其它的数 据。
长度陷阱
用了group_concat后,select里如果使用了limit是不起作用的.
用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。
使用group_concat_max_len系统变量,你可以设置允许的最大长度。
程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度,则结果被截至这个最大长度。
在SQLyog中执行 SET GLOBAL group_concat_max_len = 10 后,重新打开SQLyog,设置就会生效。
---------------------------
GROUP_CONCAT将某一字段的值按指定的字符进行累加,系统默认的分隔符是逗号,可以累加的字符长度为1024字节。可以对这些参数进行修改。
1.先举一个简单的例子
select group_concat(f_a) from t_one group by f_b;
按f_b进行分组查询,将每组中的f_a进行累加。
2.修改默认的分隔符
select group_concat(f_a separator '_') from t_one group by f_b;
separator 是一个关键字,后面跟着要进行分隔的字符
3.排序
select group_concat(f_a order by f_a separator '_') from t_one group by f_b;
4.修改默认字符大小
1).在MySQL配置文件中加上
group_concat_max_len = 102400 #你要的最大长度
2).可以简单一点,执行语句,可以设置作用范围
SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;
5.和concat使用
group_concat默认返回的是BLOB大对象,可以使用concat,返回字符串,还可以在返回的内容,在加入其它的数 据。
[2] 会合(二)——集合家族
来源: 互联网 发布时间: 2014-02-18
集合(二)——集合家族
一.集合家族
1.NSArray
NSArray是一个Cocoa类,用来存储对象的有序列表,
限制:a.只能存储Objective-C的对象,而不能存储C语言中的基本数据类型,如int,float,enum,struct或者NSArray中的随机指针。
b.不能在NSArray中存储nil(对象的零值或NULL值)。
//通过类方法arrayWithObjects创建一个新的NSArray,发送一个以逗号分隔的对象列表, //在列表结尾添加nil代表列表结束(这就是不能在数组中存储nil的原因之一) NSArray *array; array = [NSArray arrayWithObjects:@"one",@"two",@"three",nil]; //获得对象的个数 - (unsigned) count; //获取特定索引处的对象 - (id)objectAtIndex: (unsigned int) index;
2.NSMutableArray:可变数组
//数组容易也只是数组最终大小的一个参考,不会将对象预写入数组,也不会用该容量值来限制数组的大小。 + (id) arrayWithCapactity: (unsigned int) numItems; //在数组结尾处添加对象 - (void) addObject: (id) anObject //删除特定索引处的对象 - (void)removeObjectAtIndex:(unsigned) index;
3.NSEnumerator(枚举)
//创建 - (NSEnumerator *) objectNSEnumeratort; NSEnumerator *anumerator; enumerator = [array objectNSEnumerator]; //从后向前浏览集合 - (void)reverseObjectEnumerator; //获得枚举器之后可以开始一个while循环,每次循环都向这个枚举器请求它的下一个对象; - (id) nextObject; nextObject返回nil值时,循环结束 整个循环代码: NSenumerator *enumerator; enumerator = [array objectEnumerator]; id thingie; //对可变数组进行枚举操作时,不能对数组容器进行添加或删除操作 while(thingie == [enumerator nextObject]){ NSLog(@"I found %@",thingie); }
4.快速枚举
for(NSString *string in array){ NSLog(@"I found %@",string); }
5.NSDictionary(散列结构)
(1)NSDictionary
//创建字典 + (id)dicationaryWithObjectsAndKeys: (id)firstObject,...; //获取字典中的值 - (id) objectForKey: (id) aKey; 示例代码: Tire *t1 = [Tire new]; Tire *t2 = [Tire new]; Tire *t3 = [Tire new]; Tire *t4 = [Tire new]; NSDictionary *tires; tires = [NSDictionary dictionaryWithObjectsAndKeys: t1,@"front-left",t2,@"front-right", t3,@"back-left",t4,@"back-right",nil] Tire *tire =[tires objectForKey: @"back-right"];
(2)NSDictionary不可变,NSMutableDictionary允许随意添加或删除元素。
//创建NSMutableDictionary可以发送dictionary消息,也可以用dictionaryWithCapacity:方法 //并用告诉该字典的最终大小 + (id) dicationaryWithCapacity: (unsigned int) numItems;//大小仅仅是建议,不是对其限制 //添加元素 - (void) setObject: (id) anObject forKey: (id) aKey; //删除元素 - (void) removeObjectForKey:(id)aKey;
基本数据类型包装类
1.NSNumber
NSArray和NSDictionary只能存储对象,而不能直接存储任何基本类型的数据,但是可以用对象来封装然后添加到集合中
Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型
a.几个方法示例:
+ (NSNumber *) numberWithChar : (Char)value; + (NSNumber *) numberWithInt : (Int)value; + (NSNumber *) numberWithFloat : (Float)value; + (NSNumber *) numberWithBool: (Bool)value;
b。Objective-c中不支持自动装箱
NSNumber *number; number = [NSNumber numberWithInd:42]; [array addObject: number]; [dictionary setObject: number forkey: @"Bork"];
C。只要将一个基本类型数据封装到NSNumber中就可以通过下列方法重新获取它
- (Char) charValue; - (Int) intValue; - (Float) floatValue; - (Bool) boolValue; - (NSString *) stringValue
2.NSValue
NSNumber是NSValue的子类,NSValue可以包装任意值。
+ (NSValue *) valueWithBytes: (const void *) value objCType: (const void *) type;
可以使用类方法创建新的NSValue:
3.NSNull
不能将nil存入近NSArray,NSDictionary中,因为nil代表的是一个集合的结束。
传空值用如下方法:
+ (NSNull *) null;
示例:
[contact setObject: [NSNull null] forKey:@"home fax machine"];
访问它的方法
id homefax; homefax = [contact objectForKey: @"home fax machine"]; if(homefax == [NSNull null]){ //no fax machine...... }
二.集合综合运用小例子查找文件
int main(int argc, Const char *argc[]){ //初始化对象池 NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; //获得fileManager NSFileManager *defaultManager; defaultManager = [NSFileManager defaultManager]; //将路径封装 NSString *home; home = [@"~",stringByExpandingTildeInPath]; //将路径字符串传递给文件管理器 NSDirectoryEnumerator *direnum; direnum = [manager enumeratorAtPath: home]; //创建可变数组 NSMutableArray *files; files = [NSMutableArray arrayWithCapacity: 42]; //迭代符合条件扩展名为jpg的文件名 NSString *filename; while(filename = [direnum nextObject]){ if([[filename pathExtension] isEqualTo: @".jpg"]){ [files addObject: fillname]; } } //打印所有符合条件的文件名 NSEumerator *filenum; filenum = [files objectEnumerator]; while(filename = [filenum nextObject]){ NSLog(@"%@",filename); } [pool drain]; return 0; }
快速迭代方法
int main(int argc, Const char *argc[]){ NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; NSFileManager *defaultManager; defaultManager = [NSFileManager defaultManager]; NSString *home; home=[@"~",stringExpandingTildeInPath]; NSMutableArray *files; files = [NSMutableArray arrayWithCapacity: 42]; for(NSString *filename in [defaultManager enumeratorAtPath: home]){ if([[filename pathExtension] isEqualTo: @".jpg"]){ [files addObject filename]; } } for(NSString *filename in files){ NSLog(@"@",filename); } }
[3] 聚合 (一)——NSString
来源: 互联网 发布时间: 2014-02-18
集合 (一)——NSString
Cocoa由两个框架组成:FoundationKit和ApplicationKit。
ApplicationKit:存放了所有的用户接口对象和高级类
FoundationKit:有许多实用的面向数据的低级类和数据类型。
此框架存放在:/Developer/ADC Reference Libraty/documentaion/index.html中
1.示例代码:
import <Foundation/Foundation.h> int main(int argc,const char *argv[]){ NSAutorealeasePool * pool =[[NSAutorealeasePool alloc] init]; //insert your code here NSLog(@"Hello ,World"); [pool drain];//释放内存 return 0; }
2.字符串
(1)创建字符串
/*备注:a.+:代表此方法属于类方法,属于类对象(而不是属于类的实例对象)并且通常用于创建新的实例,也称工厂方法。 根据传递的参数创建新对象 类方法也可以访问全局数据, 比如AppKit中NSColor类有一些以不同颜色命名的类方法,redColor和blueColor,可以这样写 NSColor *haveBlueColor = [NSColor blueColor]; b. 省略号:表示接收多个以逗号隔开的其他参数*/ + (id)stringWithFormat: (NSString *) format,... ; NSString *height; height = [NSString stringWithFormat: @"Your height is %d feet, %d inches", 5, 11];
(2)字符串长度
- (unsigned int) length; unsigned int length = [height length];
(3)比较字符串:
- (Bool) isEqualToString: (NSString *) aString;
(4)是否区分大小写的比较
/*备注:options是位掩码,可以使用位运算符(|)来添加选项标记 常用选项:NSCaseInsensitiveSearch :不区分大小写字符 NSLiteralSearch:区分大小写比较 NSNumericSearch:比较字符串的个数而不是字符值。*/ - (NSComparisonResult) compare: (NSString *) string options:(unsigned)mask
例子:比较字符串,忽略大小写但按字符个数的多少正确排序
if([thing1 compare thing2 options: NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedSame){ NSLog(@"They match"); }
(5)字符串是否包含别的字符串
//以另一个字符串开头 - (Bool) hasPrefix: (NSString *) aString; //以另一个字符串结尾 - (Bool) hasSuffix: (NSString *) aString; //是否包含其他字符 - (NSRange) rangeOfString: (NSString *) aString;
(6)可变性
类似于StringBuffer ,Cocoa提供了NSString的子类,叫NSMutableString.
最新技术文章: