mysql 字符集问题

 

字符集出现错误解决办法

出现的问题:

mysql> update users

-> set username='关羽'

-> where userid=2;

ERROR 1366 (HY000): Incorrect string value: '\xB9\xD8\xD3\xF0' for column 'usern

ame' at row 1

向表中插入中文字符时,出现错误。

 

mysql> select * from users;

+--------+----------+

| userid | username |

+--------+----------+

| 2 | ???? |

| 3 | ???? |

| 4 | ?í?ù |

+--------+----------+

3 rows in set (0.00 sec)

表中的中文字符位乱码。

解决办法:

使用命令:

mysql> status;

--------------

mysql Ver 14.12 Distrib 5.0.45, for Win32 (ia32)

 

Connection id: 8

Current database: test

Current user: root@localhost

SSL: Not in use

Using delimiter: ;

Server version: 5.0.45-community-nt MySQL Community Edition (GPL)

Protocol version: 10

Connection: localhost via TCP/IP

Server characterset: latin1

Db characterset: latin1

Client characterset: gbk

Conn. characterset: gbk

TCP port: 3306

Uptime: 7 hours 39 min 19 sec

Threads: 2 Questions: 174 Slow queries: 0 Opens: 57 Flush tables: 1 Open ta

bles: 1 Queries per second avg: 0.006

--------------

查看mysql发现Server charactersetDb characterset的字符集设成了latin1,所以出现中文乱码。

 

mysql> show tables;

+----------------+

| Tables_in_test |

+----------------+

| users |

+----------------+

1 row in set (0.00 sec)

 

更改表的字符集。

mysql> alter table users character set GBK;

Query OK, 3 rows affected (0.08 sec)

Records: 3 Duplicates: 0 Warnings: 0

 

 

-----------------------------------------------------------------------------------------------------------------------------------

 

 

 

(1)修改 MySql安装目录下面的my.ini(MySQL Server Instance Configuration 文件)。 设置

        default-character-set=gbk(注意,有2)

(2)修改data目录中相应数据库目录下的db.opt配置文件

        default-character-set=gbk

        default-collation=gbk_chinese_ci

重启数据库,关闭控制台窗口重新登录数据库,执行SQL,一切正常

 

源文档 <http://cske.javaeye.com/blog/104503>

Mysql 字符集问题2

 

修改mysql字符编码成为UTF8

关键字: mysql 编码

 

安装后

/etc/init.d/mysql start (stop) 为启动和停止服务器

/etc/mysql/ 主要配置文件所在位置 my.cnf

/var/lib/mysql/ 放置的是数据库表文件夹,这里的mysql相当于windows下mysql的date文件夹

 

启动mysql后,以root登录mysql

isher@isher-ubuntu:~$ mysql -u root

>show variables like 'character%'; #执行编码显示

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

 

在某些时候,我们续要修改mysql默认数据库的编码,以保证某些迁移的程序可以正常显示,编辑my.cnf文件进行编码修改,windows可以直接用Mysql Server Instance Config Wizard 进行设置

 

在linux下修改3个my.cnf的1个/etc/mysql/my.cnf文件

 

找到客户端配置[client] 在下面添加

default-character-set=utf8 默认字符集为utf8

在找到[mysqld] 添加

default-character-set=utf8 默认字符集为utf8

init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

 

修改好后,重新启动mysql 即可,查询一下show variables like 'character%';

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

 

 

 

此方法用于标准mysql版本同样有效,对于/etc/my.cnf文件,需要从mysql/support-files的文件夹cp my-large.cnf一份到/etc/my.cnf

excel 相对引用,绝对引用

1.相对引用   单元格或单元格区域的相对引用是指相对于包含公式的单元格的相对位置。例如,单元格 B2 包含公式 =A1 ;Excel 将在距单元格 B2 上面一个单元格和左面一个单元格处的单元格中查找数值。

具有相对引用的公式

    在复制包含相对引用的公式时,Excel 将自动调整复制公式中的引用,以便引用相对于当前公式位置的其他单元格。例如,单元格 B2 中含有公式:=A1,A1 是 B2 左上方的单元格,拖动A2的填充柄将其复制至单元格 B3 时,其中的公式已经改为 =A2,即单元格 B3 左上方单元格处的单元格。

具有相对引用的复制公式

    2.绝对引用   绝对引用是指引用单元格的绝对名称。例如,如果公式将单元格 A1 乘以单元格 A2 (=A1*A2)放到A4中,现在将公式复制到另一单元格中,则 Excel 将调整公式中的两个引用。如果不希望这种引用发生改变,须在引用的"行号"和"列号"前加上美元符号($),这样就是单元格的绝对引用。A4中输入公式如下:

                =$A$1*$A$2

        复制A4中的公式到任何一个单元格其值都不会改变 。

    3.相对引用与绝对引用之间的切换   如果创建了一个公式并希望将相对引用更改为绝对引用(反之亦然)操作步骤如下:
      步骤1:选定包含该公式的单元格;
      步骤2:在编辑栏中选择要更改的引用并按 F4 键;
      步骤3:每次按 F4 键时,Excel 会在以下组合间切换:
           ①绝对列与绝对行(例如,$A$1);
           ②相对列与绝对行(A$1);
           ③绝对列与相对行($C1);
           ④相对列与相对行 (C1)。

    例如,在公式中选择地址 $A$1 并按 F4 键,引用将变为 A$1。再一次按 F4 键,引用将变为 $A1,以此类推。如下图:

按一次F4

按二次F4

按三次F4

按四次F4

 

excel 公式应用大全

 

1、ABS函数

函数名称:ABS

主要功能:求出相应数字的绝对值。

使用格式:ABS(number)

参数说明:number代表需要求绝对值的数值或引用的单元格。

应用举例:如果在B2单元格中输入公式:=ABS(A2),则在A2单元格中无论输入正数(如100)还是负数(如-100),B2中均显示出正数(如100)。

特别提醒:如果number参数不是数值,而是一些字符(如A等),则B2中返回错误值“#VALUE!”。

2、AND函数

函数名称:AND

主要功能:返回逻辑值:如果所有参数值均为逻辑“真(TRUE)”,则返回逻辑“真(TRUE)”,反之返回逻辑“假(FALSE)”。

使用格式:AND(logical1,logical2, ...)

参数说明:Logical1,Logical2,Logical3……:表示待测试的条件值或表达式,最多这30个。

应用举例:在C5单元格输入公式:=AND(A5>=60,B5>=60),确认。如果C5中返回TRUE,说明A5和B5中的数值笥诘扔?0,如果返回FALSE,说明A5和B5中的数值至少有一个小于60。

特别提醒:如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。

3、AVERAGE函数

函数名称:AVERAGE

主要功能:求出所有参数的算术平均值。

使用格式:AVERAGE(number1,number2,……)

参数说明:number1,number2,……:需要求平均值的数值或引用单元格(区域),参数不超过30个。

应用举例:在B8单元格中输入公式:=AVERAGE(B7:D7,F7:H7,7,8),确认后,即可求出B7至D7区域、F7至H7区域中的数值和7、8的平均值。

特别提醒:如果引用区域中包含“0”值单元格,则计算在内;如果引用区域中包含空白或字符单元格,则不计算在内。

4、COLUMN 函数

函数名称:COLUMN

主要功能:显示所引用单元格的列标号值。

使用格式:COLUMN(reference)

参数说明:reference为引用的单元格。

应用举例:在C11单元格中输入公式:=COLUMN(B11),确认后显示为2(即B列)。

特别提醒:如果在B11单元格中输入公式:=COLUMN(),也显示出2;与之相对应的还有一个返回行标号值的函数——ROW(reference)

5、CONCATENATE函数

函数名称:CONCATENATE

主要功能:将多个字符文本或单元格中的数据连接在一起,显示在一个单元格中。

使用格式:CONCATENATE(Text1,Text……)

参数说明:Text1、Text2……为需要连接的字符文本或引用的单元格。

应用举例:在C14单元格中输入公式:=CONCATENATE(A14,"@",B14,".com"),确认后,即可将A14单元格中字符、@、B14单元格中的字符和.com连接成一个整体,显示在C14单元格中。

特别提醒:如果参数不是引用的单元格,且为文本格式的,请给参数加上英文状态下的双引号,如果将上述公式改为:=A14&"@"&B14&".com",也能达到相同的目的。

6、COUNTIF函数

函数名称:COUNTIF

主要功能:统计某个单元格区域中符合指定条件的单元格数目。

使用格式:COUNTIF(Range,Criteria)

参数说明:Range代表要统计的单元格区域;Criteria表示指定的条件表达式。

应用举例:在C17单元格中输入公式:=COUNTIF(B1:B13,">=80"),确认后,即可统计出B1至B13单元格区域中,数值大于等于80的单元格数目。

特别提醒:允许引用的单元格区域中有空白单元格出现

7、DATE函数

函数名称:DATE

主要功能:给出指定数值的日期。

使用格式:DATE(year,month,day)

参数说明:year为指定的年份数值(小于9999);month为指定的月份数值(可以大于12);day为指定的天数。

应用举例:在C20单元格中输入公式:=DATE(2003,13,35),确认后,显示出2004-2-4。

特别提醒:由于上述公式中,月份为13,多了一个月,顺延至2004年1月;天数为35,比2004年1月的实际天数又多了4天,故又顺延至2004年2月4日。

上页我们介绍了ABS、AND、AVERAGE、COLUMN 、CONCATENATE、COUNTIF 、DATE 这七个常用函数,今天我们继续介绍下面的七个常用函数:

DATEDIF函数:计算返回两个日期参数的差值。

DAY函数:计算参数中指定日期或引用单元格中的日期天数。

DCOUNT函数:返回数据库或列表的列中满足指定条件并且包含数字的单元格数目。

FREQUENCY函数:以一列垂直数组返回某个区域中数据的频率分布。

IF函数:根据对指定条件的逻辑判断的真假结果,返回相对应条件触发的计算结果。

INDEX函数:返回列表或数组中的元素值,此元素由行序号和列序号的索引值进行确定。

INT函数:将数值向下取整为最接近的整数。

8、DATEDIF函数

函数名称:DATEDIF

主要功能:计算返回两个日期参数的差值。

使用格式:=DATEDIF(date1,date2,"y")、=DATEDIF(date1,date2,"m")、=DATEDIF(date1,date2,"d")

参数说明:date1代表前面一个日期,date2代表后面一个日期;y(m、d)要求返回两个日期相差的年(月、天)数。

应用举例:在C23单元格中输入公式:=DATEDIF(A23,TODAY(),"y"),确认后返回系统当前日期[用TODAY()表示)与A23单元格中日期的差值,并返回相差的年数。

特别提醒:这是Excel中的一个隐藏函数,在函数向导中是找不到的,可以直接输入使用,对于计算年龄、工龄等非常有效。

9、DAY函数

函数名称:DAY

主要功能:求出指定日期或引用单元格中的日期的天数。

使用格式:DAY(serial_number)

参数说明:serial_number代表指定的日期或引用的单元格。

应用举例:输入公式:=DAY("2003-12-18"),确认后,显示出18。

特别提醒:如果是给定的日期,请包含在英文双引号中。

10、DCOUNT函数

函数名称:DCOUNT

主要功能:返回数据库或列表的列中满足指定条件并且包含数字的单元格数目。

使用格式:DCOUNT(database,field,criteria)

参数说明:Database表示需要统计的单元格区域;Field表示函数所使用的数据列(在第一行必须要有标志项);Criteria包含条件的单元格区域。

应用举例:如图1所示,在F4单元格中输入公式:=DCOUNT(A1:D11,"语文",F1:G2),确认后即可求出“语文”列中,成绩大于等于70,而小于80的数值单元格数目(相当于分数段人数)。

特别提醒:如果将上述公式修改为:=DCOUNT(A1:D11,,F1:G2),也可以达到相同目的。

11、FREQUENCY函数

函数名称:FREQUENCY

主要功能:以一列垂直数组返回某个区域中数据的频率分布。

使用格式:FREQUENCY(data_array,bins_array)

参数说明:Data_array表示用来计算频率的一组数据或单元格区域;Bins_array表示为前面数组进行分隔一列数值。

应用举例:如图2所示,同时选中B32至B36单元格区域,输入公式:=FREQUENCY(B2:B31,D2:D36),输入完成后按下“Ctrl+Shift+Enter”组合键进行确认,即可求出B2至B31区域中,按D2至D36区域进行分隔的各段数值的出现频率数目(相当于统计各分数段人数)。

特别提醒:上述输入的是一个数组公式,输入完成后,需要通过按“Ctrl+Shift+Enter”组合键进行确认,确认后公式两端出现一对大括号({}),此大括号不能直接输入。

12、IF函数

函数名称:IF

主要功能:根据对指定条件的逻辑判断的真假结果,返回相对应的内容。

使用格式:=IF(Logical,Value_if_true,Value_if_false)

参数说明:Logical代表逻辑判断表达式;Value_if_true表示当判断条件为逻辑“真(TRUE)”时的显示内容,如果忽略返回“TRUE”;Value_if_false表示当判断条件为逻辑“假(FALSE)”时的显示内容,如果忽略返回“FALSE”。

应用举例:在C29单元格中输入公式:=IF(C26>=18,"符合要求","不符合要求"),确信以后,如果C26单元格中的数值大于或等于18,则C29单元格显示“符合要求”字样,反之显示“不符合要求”字样。

特别提醒:本文中类似“在C29单元格中输入公式”中指定的单元格,读者在使用时,并不需要受其约束,此处只是配合本文所附的实例需要而给出的相应单元格,具体请大家参考所附的实例文件。

20、MID函数

函数名称:MID

主要功能:从一个文本字符串的指定位置开始,截取指定数目的字符。

使用格式:MID(text,start_num,num_chars)

参数说明:text代表一个文本字符串;start_num表示指定的起始位置;num_chars表示要截取的数目。

应用举例:假定A47单元格中保存了“我喜欢天极网”的字符串,我们在C47单元格中输入公式:=MID(A47,4,3),确认后即显示出“天极网”的字符。

特别提醒:公式中各参数间,要用英文状态下的逗号“,”隔开。

21、MIN函数

函数名称:MIN

主要功能:求出一组数中的最小值。

使用格式:MIN(number1,number2……)

参数说明:number1,number2……代表需要求最小值的数值或引用单元格(区域),参数不超过30个。

应用举例:输入公式:=MIN(E44:J44,7,8,9,10),确认后即可显示出E44至J44单元和区域和数值7,8,9,10中的最小值。

特别提醒:如果参数中有文本或逻辑值,则忽略。

们在使用Excel制作表格整理数据的时候,常常要用到它的函数功能来统计处理表格中的数据。本文以Excel为例(其它版本请仿照操作),向大家介绍一些在Excel中使用频率最高的函数的功能和使用方法。2003

Excel函数系列之后我们还会推出Excel常用函数实例文章系列,欢迎大家关注。

为方便大家浏览,我们按函数名称的字母进行排序。

前面我们介绍了以下函数的功能和用法:

ABS、AND、AVERAGE、COLUMN 、CONCATENATE、COUNTIF 、DATE

DATEDIF、DAY、DCOUNT、FREQUENCY、IF、INDEX、INT

ISERROR、LEFT、LEN、MATCH、MAX、MID、MIN

我们继续介绍下面的七个常用函数:

MOD函数:求出两数相除的余数。

MONTH函数:求出指定日期或引用单元格中的日期的月份。

NOW函数:给出当前系统日期和时间。

OR函数:仅当所有参数值均为逻辑“假(FALSE)”时返回结果逻辑“假(FALSE)”,否则都返回逻辑“真(TRUE)”。

RANK函数:返回某一数值在一列数值中的相对于其他数值的排位。

RIGHT函数:从一个文本字符串的最后一个字符开始,截取指定数目的字符。

SUBTOTAL函数:返回列表或数据库中的分类汇总。

22、MOD函数

函数名称:MOD

主要功能:求出两数相除的余数。

使用格式:MOD(number,divisor)

参数说明:number代表被除数;divisor代表除数。

应用举例:输入公式:=MOD(13,4),确认后显示出结果“1”。

特别提醒:如果divisor参数为零,则显示错误值“#DIV/0!”;MOD函数可以借用函数INT来表示:上述公式可以修改为:=13-4*INT(13/4)。

23、MONTH函数

函数名称:MONTH

主要功能:求出指定日期或引用单元格中的日期的月份。

使用格式:MONTH(serial_number)

参数说明:serial_number代表指定的日期或引用的单元格。

应用举例:输入公式:=MONTH("2003-12-18"),确认后,显示出11。

特别提醒:如果是给定的日期,请包含在英文双引号中;如果将上述公式修改为:=YEAR("2003-12-18"),则返回年份对应的值“2003”。

24、NOW函数

函数名称:NOW

主要功能:给出当前系统日期和时间。

使用格式:NOW()

参数说明:该函数不需要参数。

应用举例:输入公式:=NOW(),确认后即刻显示出当前系统日期和时间。如果系统日期和时间发生了改变,只要按一下F9功能键,即可让其随之改变。

特别提醒:显示出来的日期和时间格式,可以通过单元格格式进行重新设置。

25、OR函数

函数名称:OR

主要功能:返回逻辑值,仅当所有参数值均为逻辑“假(FALSE)”时返回函数结果逻辑“假(FALSE)”,否则都返回逻辑“真(TRUE)”。

使用格式:OR(logical1,logical2, ...)

参数说明:Logical1,Logical2,Logical3……:表示待测试的条件值或表达式,最多这30个。

应用举例:在C62单元格输入公式:=OR(A62>=60,B62>=60),确认。如果C62中返回TRUE,说明A62和B62中的数值至少有一个大于或等于60,如果返回FALSE,说明A62和B62中的数值都小于60。

特别提醒:如果指定的逻辑条件参数中包含非逻辑值时,则函数返回错误值“#VALUE!”或“#NAME”。

26、RANK函数

函数名称:RANK

主要功能:返回某一数值在一列数值中的相对于其他数值的排位。

使用格式:RANK(Number,ref,order)

参数说明:Number代表需要排序的数值;ref代表排序数值所处的单元格区域;order代表排序方式参数(如果为“0”或者忽略,则按降序排名,即数值越大,排名结果数值越小;如果为非“0”值,则按升序排名,即数值越大,排名结果数值越大;)。

应用举例:如在C2单元格中输入公式:=RANK(B2,$B$2:$B$31,0),确认后即可得出丁1同学的语文成绩在全班成绩中的排名结果。

特别提醒:在上述公式中,我们让Number参数采取了相对引用形式,而让ref参数采取了绝对引用形式(增加了一个“$”符号),这样设置后,选中C2单元格,将鼠标移至该单元格右下角,成细十字线状时(通常称之为“填充柄”),按住左键向下拖拉,即可将上述公式快速复制到C列下面的单元格中,完成其他同学语文成绩的排名统计。

27、RIGHT函数

函数名称:RIGHT

主要功能:从一个文本字符串的最后一个字符开始,截取指定数目的字符。

使用格式:RIGHT(text,num_chars)

参数说明:text代表要截字符的字符串;num_chars代表给定的截取数目。

应用举例:假定A65单元格中保存了“我喜欢天极网”的字符串,我们在C65单元格中输入公式:=RIGHT(A65,3),确认后即显示出“天极网”的字符。

特别提醒:Num_chars参数必须大于或等于0,如果忽略,则默认其为1;如果num_chars参数大于文本长度,则函数返回整个文本。

28、SUBTOTAL函数

函数名称:SUBTOTAL

主要功能:返回列表或数据库中的分类汇总。

使用格式:SUBTOTAL(function_num, ref1, ref2, ...)

参数说明:Function_num为1到11(包含隐藏值)或101到111(忽略隐藏值)之间的数字,用来指定使用什么函数在列表中进行分类汇总计算(如图6);ref1, ref2,……代表要进行分类汇总区域或引用,不超过29个。

应用举例:如图7所示,在B64和C64单元格中分别输入公式:=SUBTOTAL(3,C2:C63)和=SUBTOTAL103,C2:C63),并且将61行隐藏起来,确认后,前者显示为62(包括隐藏的行),后者显示为61,不包括隐藏的行。

特别提醒:如果采取自动筛选,无论function_num参数选用什么类型,SUBTOTAL函数忽略任何不包括在筛选结果中的行;SUBTOTAL函数适用于数据列或垂直区域,不适用于数据行或水平区域。

我们在使用Excel制作表格整理数据的时候,常常要用到它的函数功能来统计处理表格中的数据。本文以Excel为例(其它版本请仿照操作),向大家介绍一些在Excel中使用频率最高的函数的功能和使用方法。文章末尾提供.xls文件供大家下载参考。2003

Excel函数系列之后我们还会推出Excel常用函数实例文章系列,欢迎大家关注。

为方便大家浏览,我们按函数名称的字母进行排序。

前面我们介绍了以下函数的功能和用法:

ABS、AND、AVERAGE、COLUMN 、CONCATENATE、COUNTIF 、DATE

DATEDIF、DAY、DCOUNT、FREQUENCY、IF、INDEX、INT

ISERROR、LEFT、LEN、MATCH、MAX、MID、MIN

MOD、MONTH、NOW、OR、RANK、RIGHT、SUBTOTAL

文章导读

我们继续介绍下面的七个常用函数:

SUM 函数:计算所有参数数值的和。

SUMIF函数:计算符合指定条件的单元格区域内的数值和。

TEXT函数:根据指定的数值格式将相应的数字转换为文本形式。

TODAY函数:给出系统日期。

VALUE函数:将一个代表数值的文本型字符串转换为数值型。

VLOOKUP函数:在数据表的首列查找指定的数值,并由此返回数据表当前行中指定列处的数值。

WEEKDAY函数:给出指定日期对应的星期数。

29、SUM函数

函数名称:SUM

主要功能:计算所有参数数值的和。

使用格式:SUM(Number1,Number2……)

参数说明:Number1、Number2……代表需要计算的值,可以是具体的数值、引用的单元格(区域)、逻辑值等。

应用举例:如图7所示,在D64单元格中输入公式:=SUM(D2:D63),确认后即可求出语文的总分。

特别提醒:如果参数为数组或引用,只有其中的数字将被计算。数组或引用中的空白单元格、逻辑值、文本或错误值将被忽略;如果将上述公式修改为:=SUM(LARGE(D2:D63,{1,2,3,4,5})),则可以求出前5名成绩的和。

30、SUMIF函数

函数名称:SUMIF

主要功能:计算符合指定条件的单元格区域内的数值和。

使用格式:SUMIF(Range,Criteria,Sum_Range)

参数说明:Range代表条件判断的单元格区域;Criteria为指定条件表达式;Sum_Range代表需要计算的数值所在的单元格区域。

应用举例:如图7所示,在D64单元格中输入公式:=SUMIF(C2:C63,"男",D2:D63),确认后即可求出“男”生的语文成绩和。

特别提醒:如果把上述公式修改为:=SUMIF(C2:C63,"女",D2:D63),即可求出“女”生的语文成绩和;其中“男”和“女”由于是文本型的,需要放在英文状态下的双引号("男"、"女")中。

31、TEXT函数

函数名称:TEXT

主要功能:根据指定的数值格式将相应的数字转换为文本形式。

使用格式:TEXT(value,format_text)

参数说明:value代表需要转换的数值或引用的单元格;format_text为指定文字形式的数字格式。

应用举例:如果B68单元格中保存有数值1280.45,我们在C68单元格中输入公式:=TEXT(B68, "$0.00"),确认后显示为“$1280.45”。

特别提醒:format_text参数可以根据“单元格格式”对话框“数字”标签中的类型进行确定。

32、TODAY函数

函数名称:TODAY

主要功能:给出系统日期。

使用格式:TODAY()

参数说明:该函数不需要参数。

应用举例:输入公式:=TODAY(),确认后即刻显示出系统日期和时间。如果系统日期和时间发生了改变,只要按一下F9功能键,即可让其随之改变。

特别提醒:显示出来的日期格式,可以通过单元格格式进行重新设置(参见附件)。

33、VALUE函数

函数名称:VALUE

主要功能:将一个代表数值的文本型字符串转换为数值型。

使用格式:VALUE(text)

参数说明:text代表需要转换文本型字符串数值。

应用举例:如果B74单元格中是通过LEFT等函数截取的文本型字符串,我们在C74单元格中输入公式:=VALUE(B74),确认后,即可将其转换为数值型。

特别提醒:如果文本型数值不经过上述转换,在用函数处理这些数值时,常常返回错误。

34、VLOOKUP函数

函数名称:VLOOKUP

主要功能:在数据表的首列查找指定的数值,并由此返回数据表当前行中指定列处的数值。

使用格式:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

参数说明:Lookup_value代表需要查找的数值;Table_array代表需要在其中查找数据的单元格区域;Col_index_num为在table_array区域中待返回的匹配值的列序号(当Col_index_num为2时,返回table_array第2列中的数值,为3时,返回第3列的值……);Range_lookup为一逻辑值,如果为TRUE或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于lookup_value的最大数值;如果为FALSE,则返回精确匹配值,如果找不到,则返回错误值#N/A。

应用举例:参见图7,我们在D65单元格中输入公式:=VLOOKUP(B65,B2:D63,3,FALSE),确认后,只要在B65单元格中输入一个学生的姓名(如丁48),D65单元格中即刻显示出该学生的语言成绩。

特别提醒:Lookup_value参见必须在Table_array区域的首列中;如果忽略Range_lookup参数,则Table_array的首列必须进行排序;在此函数的向导中,有关Range_lookup参数的用法是错误的。

35、WEEKDAY函数

函数名称:WEEKDAY

主要功能:给出指定日期的对应的星期数。

使用格式:WEEKDAY(serial_number,return_type)

参数说明:serial_number代表指定的日期或引用含有日期的单元格;return_type代表星期的表示方式[当Sunday(星期日)为1、Saturday(星期六)为7时,该参数为1;当Monday(星期一)为1、Sunday(星期日)为7时,该参数为2(这种情况符合中国人的习惯);当Monday(星期一)为0、Sunday(星期日)为6时,该参数为3]。

应用举例:输入公式:=WEEKDAY(TODAY(),2),确认后即给出系统日期的星期数。

特别提醒:如果是指定的日期,请放在英文状态下的双引号中,如=WEEKDAY("2003-12-18",2)。

 

从 <http://www.360doc.com/content/09/0312/11/109479_2786621.shtml> 插入

gear database api

 

Database API

The Database API provides browser-local relational data storage to your JavaScript web application. Gears uses the open source SQLite database system.

Contents

  1. Overview
  2. Example
  1. Classes
    1. Database
    2. ResultSet
  1. Location of Database Files
  1. Local Modifications to SQLite
  2. Full-Text Search

Overview

The Database API is used to persistently store an application user's data on the user's computer. Data is stored using the same-origin security policy, meaning that a web application cannot access data outside of its domain (see Security).

Data is stored and retrieved by executing SQL statements. For information on the SQL syntax supported, see the SQLite document "SQL as Understood By SQLite", and also local modifications to SQLite, below. Gears includes SQLite's full-text search extension fts2.

Security considerations

SQL statements passed to execute() can and should use bind parameters (?) to prevent SQL injection attacks. Read about database security best practices on the Security page.

Permission

This API requires user permission. If you would like to customize the default dialog, you can explicitly call google.gears.factory.getPermission() - see how.

Example

<script type="text/javascript" src="gears_init.js"></script>

<script type="text/javascript">

var db = google.gears.factory.create('beta.database');

db.open('database-test');

db.execute('create table if not exists Test' +

           ' (Phrase text, Timestamp int)');

db.execute('insert into Test values (?, ?)', ['Monkey!', new Date().getTime()]);

var rs = db.execute('select * from Test order by Timestamp desc');

while (rs.isValidRow()) {

  alert(rs.field(0) + '@' + rs.field(1));

  rs.next();

}

rs.close();

</script>

Classes

Database class

   void      open([name])

   ResultSet execute(sqlStatement, [argArray])

   void      close()

   void      remove()

   readonly attribute int lastInsertRowId

   readonly attribute int rowsAffected

ResultSet class

   boolean isValidRow()

   void    next()

   void    close()

   int     fieldCount()

   string  fieldName(int fieldIndex)

   variant field(int fieldIndex)

   variant fieldByName(string fieldName)

Database class

Methods

open([name])

 

Return value:

void

Parameters:

name - optional.

Exceptions:

Throws an exception if an error occurs.

 

Currently the name, if supplied and of length greater than zero, must consist only of visible ASCII characters excluding the following characters:

 

/ \ : * ? " < > | ; ,

 

Otherwise, open() will throw an exception. Before finalization of the API we expect to remove this restriction.

Description:

Opens the database name, or an unnamed database if name is omitted. name is local to the application's origin (see Security).

execute(sqlStatement, [argArray])

 

Return Value

ResultSet

Parameters

sqlStatement is a string containing a SQL statement, with ? as a placeholder for bind parameters.

 

argArray is an optional array of bind parameters to be substituted for the placeholders.

Exceptions

Throws an exception if the SQL statement fails to execute. See the exception object's message attribute for details.

 

Note: If multiple processes (including Workers) attempt to write to the database at the same time, one can fail. It is up to the application to retry in these situations.

Description

Substitute zero or more bind parameters from argArray into sqlStatement and execute the resulting SQL statement. There must be exactly as many items in argArray as their are ? placeholders in sqlStatement. argArray can be omitted if there are no placeholders. The results of executing the statement are returned in a ResultSet.

 

open() must be called and must return successfully before calling execute().

Example:

resultSet = db.execute (

  'INSERT INTO MYTABLE VALUES (?, ?, ?) WHERE id=?',

  [1, 2, 'three four', 5]

);

 

SQLite automatically quote-escapes bind parameters, so in execution the statement expands to:

'INSERT INTO MYTABLE VALUES (1, 2, "three four") WHERE id=5'

 

For information on SQL syntax, see the SQLite documentation "SQL as Understood By SQLite"

 

close()

 

Return value:

void

Exceptions:

Throws an exception if an error occurs.

Description:

Closes the database connection, if any, currently associated with this Database instance. Calling Database.close() is not required.

 

 

remove()

 

Return value:

void

Description:

Completely deletes the currently opened database. Closes the database first if necessary.

Attributes

lastInsertRowId

 

Return value:

readonly attribute int

Description:

Represents the rowid of the most recent insert on this Database instance.

Returns zero if no inserts have ever occurred on this instance.

 

Note that all rows in every table have a rowid, even rows in tables that do not have integer-type primary keys. Thus, every successful insert updates this attribute.

rowsAffected

 

Return value:

readonly attribute int

Description:

Represents the number of database rows that were changed, inserted, or deleted by the most recently completed INSERT, UPDATE, or DELETE statement on this Database instance.

 

Returns zero if no row changes have ever occurred on this instance.

 

Note: An unconstrained delete of all rows in a table (DELETE FROM table) will return zero rather than the number of rows that were originally present in the table; if you need the number of rows, use DELETE FROM table WHERE 1 instead, though be aware that this is slower than an unconstrained delete.

 

ResultSet class

Back to top

A ResultSet is returned from a successful call to Database.execute(). It contains the results of executing the SQL statement.

A ResultSet is immutable, subsequent changes to the underlying database do not affect the contents.

Iterate over the rows of the result set using isValidRow(), next(), and close(), calling data extraction methods for valid rows. For example:

while (rs.isValidRow()) {

  console.log(rs.fieldName(0) + " == " + rs.field(0));

  rs.next();

}

rs.close();

Methods

isValidRow()

 

Return value:

boolean

Description:

Returns true if you can call data extraction methods.

next()

 

Return value:

void

Description:

Advances to the next row of the results.

close()

 

Return value:

void

Exceptions:

Throws an exception if an error occurs.

Description:

Releases the state associated with this result set

 

You are required to call close() when you are finished with any result set.

 

Note: there is currently a feature request to have close called automatically when the result set goes out of scope.

 

Methods for extracting data

fieldCount()

 

Return value:

int

Description:

Returns the number of fields in this result set.

fieldName(int fieldIndex)

 

Return value:

string

Exceptions:

Throws an exception if fieldIndex is out of range.

Parameters:

fieldIndex : the zero-based index of the desired field

Description:

Returns the name of the specified field in the current result set. This name is derived from the SQL statement which was executed.

field(int fieldIndex)

 

Return value:

variant

Exceptions:

Throws an exception if fieldIndex is out of range.

Parameters:

fieldIndex : the zero-based index of the desired field

Description:

Returns the contents of the specified field in the current row.

fieldByName(string fieldName)

 

Return value:

variant

Exceptions:

Throws an exception if fieldName names a nonexistent field.

Parameters:

fieldName: the name of the desired field

Description:

Returns the contents of the specified field in the current row.

 

Location of Database File

Database files that your application creates are stored on the user's computer in a location that is determined by the browser being used and the platform.

Windows Vista - Internet Explorer

Location: {FOLDERID_LocalAppDataLow}\Google\Google Gears for Internet Explorer

Example: C:\Users\Bob\AppData\LocalLow\Google\Google Gears for Internet Explorer

Windows Vista - Firefox - Database files are stored in the user local profile directory.

Location: C:\Users\<username>\AppData\Local\Mozilla\Firefox\Profiles\{profile}.default\Google Gears for Firefox

Example: C:\Users\Bob\AppData\Local\Mozilla\Firefox\Profiles\uelib44s.default\Google Gears for Firefox

Windows Vista - Chrome - Database files are stored in the user local profile directory.

Location: C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Plugin Data\Google Gears

Example: C:\Users\Bob\AppData\Local\Google\Chrome\User Data\Default\Plugin Data\Google Gears

Windows XP - Internet Explorer - Database files are stored in the user local profile directory.

Location: C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Google Gears for Internet Explorer

Example: C:\Documents and Settings\Bob\Local Settings\Application Data\Google\Google Gears for Internet Explorer

Windows XP - Firefox - Database files are stored in the user local profile directory.

Location: C:\Documents and Settings\<username>\Local Settings\Application Data\Mozilla\Firefox\Profiles\{profile}\Google Gears for Firefox

Example: C:\Documents and Settings\Bob\Local Settings\Application Data\Mozilla\Firefox\Profiles\uelib44s.default\Google Gears for Firefox

Windows XP - Chrome - Database files are stored in the user local profile directory.

Location: C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default\Plugin Data\Google Gears

Example: C:\Documents and Settings\Bob\Local Settings\Application Data\Google\Chrome\User Data\Default\Plugin Data\Google Gears

Mac OS X - Safari - Database files are stored in the user Application Support directory.

Location: ~/Library/Application Support/Google/Google Gears for Safari

Example: /Users/Bob/Library/Application Support/Google/Google Gears for Safari

Mac OS X - Firefox - Database files are stored in the user local profile directory.

Location: Users/<username>/Library/Caches/Firefox/Profiles/{profile}.default/Google Gears for Firefox

Example: Users/Bob/Library/Caches/Firefox/Profiles/08ywpi3q.default/Google Gears for Firefox

Linux - Firefox - Database files are stored in the user home directory.

Location: ~bob/.mozilla/firefox/<firefox's profile id>/Google Gears for Firefox

Example: ~bob/.mozilla/firefox/08ywpi3q.default/Google Gears for Firefox

Windows Mobile 5.0 and 6.0

Location: \Application Data\Google\Google Gears for Internet Explorer

 

Local Modifications to SQLite

This section describes modifications that Gears makes to SQLite.

Attached databases

The SQLite ATTACH and DETACH commands can be used to open an arbitrary SQLite database on the user's disk. For this reason, these commands have been disabled in Gears. In the future this functionality may be exposed in a way which respects the same-origin security policy.

PRAGMA settings

The SQLite PRAGMA command allows setting and inspection of various platform settings, including certain settings which could potentially be used to compromise security. At this time, Gears disables PRAGMA, though it is possible that specific PRAGMA uses may be re-enabled or exposed in the Database interface.

The default PRAGMA settings for Gears which differ from the SQLite defaults:

  • PRAGMA encoding = 'UTF-8';
    This controls the encoding used to store textual data on disk. UTF-16 encoding on disk is almost never a win on desktop machines, it is generally faster to read the smaller amount of UTF-8 data and decode it on the fly.
  • PRAGMA auto_vacuum = 1;
    Over time database files can become filled with gaps where data has been deleted. These gaps can be recovered with the VACUUM command, but VACUUM can lock the database for extended periods of time, making it a challenge to integrate into interactive applications. auto_vacuum mode recovers these gaps incrementally as they are generated.
  • PRAGMA page_size = 4096;
    Desktop operating systems mostly have default virtual memory and disk block sizes of 4k and higher.
  • PRAGMA cache_size = 2048;
    Provides 8M of page cache.
  • PRAGMA synchronous = NORMAL;
    Synchronous controls whether data is synchronized to disk before COMMIT commands return (commands not in transactions are implicitly wrapped in one). Setting synchronous to OFF can provide a significant performance boost, at the expense of potential data corruption. Much of the benefit of turning synchronous off can generally be achieved by using a combination of large transactions and WorkerPool.

 

Full-Text Search

Gears includes an SQLite extension called fts2, for "Full-Text Search". fts2 allows you to create a table and search for words in TEXT data. An fts2 table is created as follows:

db.execute('CREATE VIRTUAL TABLE recipe USING fts2(dish, ingredients)');

This creates an fts2 table named 'recipe', with fields 'dish' and 'ingredients'. All fts2 fields are of type TEXT. Data in the table is manipulated using standard SQL commands such as INSERT, UPDATE, and DELETE. Like other SQLite tables, the fts2 table has an implicit unique rowid field, which acts as a unique index.

fts2 tables have some unique properties:

  • No indices other than the rowid and full-text indices are allowed.
  • fts2 tables contain a special field with the same name as the table. This field is used in search queries, as described below.
  • Because the special field exists, is important to always list the specific fields being inserted in INSERT statements, and list specific result fields in SELECT statements. SELECT * will throw exceptions when run on an fts2 table.

Full-text Query Syntax

To query using the full-text index, use the MATCH operator as follows:

<table_or_field_name> MATCH <query>

  • If <table_or_field_name> is the name of the table, then the match is done against all fields of the table.
  • If <table_or_field_name> is the name of a field, then the match is done against that field.

 

The following returns the names of all recipes which include 'tomatoes' in any field:

var rs = db.execute('SELECT dish FROM recipe WHERE recipe MATCH ?', ['tomatoes']);

Examples of fts2 query syntax:

cheese tomatoes

Find rows containing 'cheese' and 'tomatoes' in any field.

dish:stew tomatoes

Find rows with 'stew' in the dish field, and 'tomatoes' in any field.

cheese OR tomatoes

Find rows containing either 'cheese' or 'tomatoes' in any field. Note that OR operator must be capitalized.

"green tomatoes"

Find rows where 'green' is immediately followed by 'tomatoes', in any single field.

cheese -tomatoes

Find rows containing 'cheese' in any field, and not containing 'tomatoes' in any field.

ch*

Find rows containing words which start with 'ch', including rows containing 'cheese' or 'chowder'. The '*' must come at the end of the word.

Using Indices with fts2

fts2 tables are restricted to contain only TEXT fields and the full-text index. To simulate additional indices or non-TEXT fields, an auxiliary table can be used:

db.execute('CREATE TABLE recipe_aux (dish TEXT PRIMARY KEY, rating INTEGER)');

db.execute('CREATE VIRTUAL TABLE recipe USING fts2(dish, ingredients)');

A logical row is split across the recipe and recipe_aux tables, joined on the rowid. The recipe_aux table constrains dish to be unique, and adds field rating, which will not be included in the full-text index. For example, to search for recipes with 'cheese' that have rating higher than 3:

var rs = db.execute('SELECT recipe.rowid FROM recipe, recipe_aux ' +

                    ' WHERE recipe.rowid = recipe_aux.rowid AND recipe_aux.rating > ? AND recipe MATCH ?',

                    [3, 'cheese']);

Insertions, deletions, and updates should be done within transactions to keep the tables consistent:

db.execute('BEGIN');

db.execute('INSERT INTO recipe_aux (dish, rating) VALUES (?, ?)', ['soup', 3]);

db.execute('INSERT INTO recipe (rowid, dish, ingredients) ' +

           'VALUES (last_insert_rowid(), ?, ?)',

           ['soup', 'meat carrots celery noodles']);

db.execute('COMMIT');

 

源文档 <http://code.google.com/intl/zh-CN/apis/gears/api_database.html>