mysql中insert into和replace into以及insert ignore用法区别: 
mysql中常用的三种插入数据的语句: 
insert into表示插入数据,数据库会检查主键,如果出现重复会报错; 
replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样; 
insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据; 
下面通过代码说明之间的区别,如下: 
create table testtb( 
id int not null primary key, 
name varchar(50), 
age int 
); 
insert into testtb(id,name,age)values(1,"bb",13); 
select * from testtb; 
insert ignore into testtb(id,name,age)values(1,"aa",13); 
select * from testtb;//仍是1,“bb”,13,因为id是主键,出现主键重复但使用了ignore则错误被忽略 
replace into testtb(id,name,age)values(1,"aa",12); 
select * from testtb; //数据变为1,"aa",12

posted @ 2011-09-28 01:34 Glawind 阅读(303) 评论(0) 编辑

示例:

 round(123.456,2)    

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

  123.47

ROUND   (   numeric_expression   ,   length   [   ,   function   ]   )   

  参数 

  numeric_expression 

  

  精确数字或近似数字数据类型类别的表达式(bit   数据类型除外)。 

  

  length 

  

  是   numeric_expression   将要四舍五入的精度。length   必须是   tinyint、smallint   或int。当   length   为正数时,numeric_expression   四舍五入为   length   所指定的小数位数。当   length   为负数时,numeric_expression   则按   length   所指定的在小数点的左边四舍五入。 

  

  function 

  

  是要执行的操作类型。function   必须是   tinyint、smallint   或   int。如果省略   function   或   function   的值为   0(默认),numeric_expression   将四舍五入。当指定   0   以外的值时,将截断   numeric_expression。 

round(123.456,   0)   

  -------       

  123.000 

  

  SELECT   FLOOR(123.45),   FLOOR(-123.45),   FLOOR($123.45) 

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

  123                         -124                     123.0000       

  

  SELECT   CEILING(123.45),   CEILING(-123.45),   CEILING(0.0) 

  以下為結果集: 

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

  124               -123                   0   

///////////////////////////////////////////////////////////

ORACLE的TRUNC包罗万象,DB2的TRUNC只是给数字用的。但象DATE等都能实现。比如,DATE(A TIMESTAMP FIELD)会把TIMESTAMP后面的都拿掉,成了一个PURE DATE,就象ORACLE的TRUNC(SYSDATE)会把后面的时间拿掉一样。

SQL> select trunc(2345.6789,2) from dual;

TRUNC(2345.6789,2)

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

           2345.67

/home/db2inst > db2 -v "select decimal(2345.6789,10,2) from sysibm.sysdummy1"

select decimal(2345.6789,10,2) from sysibm.sysdummy1

1

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

     2345.67

  1 record(s) selected.

posted @ 2011-07-25 08:48 Glawind 阅读(2144) 评论(0) 编辑

1. 用法一

LOCATE(substr,str) 

POSITION(substr IN str)

函数返回子串substr在字符串str中第一次出现的位置。如果子串substr在str中不存在返回值0

mysql> SELECT LOCATE('bar', 'foobarbar'); 

-> 4 

mysql> SELECT LOCATE('xbar', 'foobar'); 

-> 0 


这个函数是大小写不敏感的。在MySQL3.23中,这个函数是字母大小写敏感的,当在MySQL4.0中时,如有任一参数是一个二进制字符串,它才是字母大小写敏感的。 


2. 用法二

LOCATE(substr,str,pos) 

函数返回子串substr在字符串str中的第pos位置后第一次出现的位置。如果substr不在str中返回0。 

mysql> SELECT LOCATE('bar', 'foobarbar',5); 

-> 7 


这个函数是大小写不敏感的。在 MySQL 3.23 中,这个函数是字母大小写敏感的,当在 MySQL 4.0 中时,如有任一参数是一个二进制字符串,它才是字母大小写敏感的。 


3. 例子 

SELECT * FROM tb_name WHERE LOCATE(colum1,colum1,1)>0

posted @ 2011-07-22 17:06 Glawind 阅读(242) 评论(0) 编辑

1. 语法介绍
      有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现:

INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name
 

      上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了:

INSERT INTO a (field1,field2) SELECT * FROM(SELECT b.f1,c.f2 FROM b JOIN c) AS tb
 

      其中f1是表b的字段,f2是表c的字段,通过JOIN查询就将分别来自表b和表c的字段进行了组合,然后再通过SELECT嵌套查询插入到表a中,这样就满足了这个场景了,如果需要不止2个表,那么可以多个JOIN的形式来组合字段。

2. 语法错误注意
      需要注意的是嵌套查询部分最后一定要有设置表别名,如下:

SELECT * FROM (SELECT f1,f2 FROM b JOIN c) AS tb

      即最后的AS tb是必须的(tb这个名称可以随意取),即指定一个别名。每个派生出来的新表都必须指定别名,否则在mysql中会报如下错误:

ERROR 1248 (42000): Every derived TABLE must have its own alias
 

      另外,MySQL中INSERT INTO SELECT不能加VALUES,即不能写成如下形式:

INSERT INTO db1_name(field1,field2) VALUES SELECT field1,field2 FROM db2_name
 

      否则也会报错:You have an error in your SQL syntax

posted @ 2011-07-22 16:38 Glawind 阅读(2686) 评论(0) 编辑

1. iconv()介绍

      iconv函数可以将一种已知的字符集文件转换成另一种已知的字符集文件。例如:从GB2312转换为UTF-8。

      iconv函数在php5中内置,GB字符集默认打开。
 

2. iconv()错误

      iconv在转换字符”—”到gb2312时会出错,解决方法是在需要转成的编码后加 “//IGNORE”,也就是iconv函数第二个参数后。如下:

      iconv("UTF-8", "GB2312//IGNORE", $data)

      ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。
 
3. iconv()例子
  例1:
  <?php
    echo $str= ‘你好,这里是卖咖啡!’;
    echo '<br />';
    echo iconv('GB2312', 'UTF-8', $str); //将字符串的编码从GB2312转到UTF-8
    echo '<br />';
    echo iconv_substr($str, 1, 1, 'UTF-8'); //按字符个数截取而非字节
    print_r(iconv_get_encoding()); //得到当前页面编码信息
    echo iconv_strlen($str, 'UTF-8'); //得到设定编码的字符串长度
  ?>
 
  例2:
  如果你的PHP文件是UTF-8编码的,那么下面的代码就可以正确输出:
  <?php
    $str='我爱百度';
    $utf='';
    for ($i=0;$i<strlen($str);$i++) $utf.=sprintf("%%%02X",ord(substr($str,$i,1)));
    echo $utf;
  ?>
  如果你的PHP文件是GB的,那么下面的代码可以工作:
  <?php
    $str='我爱百度';
    $str=iconv("GBK", "UTF-8", $str);
    $utf='';
    for ($i=0;$i<strlen($str);$i++) $utf.=sprintf("%%%02X",ord(substr($str,$i,1)));
    echo $utf;
  ?>
  以上情况下,程序输出的内容是:
  %E6%88%91%E7%88%B1%E7%99%BE%E5%BA%A6
posted @ 2011-07-17 03:40 Glawind 阅读(917) 评论(0) 编辑

1. preg_replace()

$msg = preg_replace("/<style>.+<\/style>/is", "", $msg); -----删除<style></style>和中间的部分
$msg = preg_replace("/<[^>]+>/", "", $msg); -----是删除<>和中间的内容

  i (PCRE_CASELESS)
  如果设定此修正符,模式中的字符将同时匹配大小写字母。 
  s (PCRE_DOTALL)
  如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。
 

2. ereg()eregi()

  注: preg_match() 函数通常是比 ereg() 更快的替代方案

eregi("<body([^>]+)>(.+)</body>",$data,$b)----察看$data中是否有body标签。如果有,把参数赋值$b[0],中间部分赋值$b[1]。

bool ereg ( string pattern, string string [, array regs] )

int eregi ( string pattern, string string, array [regs] )

  eregi()和 ereg() 类似,用法也相同。不同之处在于ereg()有区分大小写,eregi()与大小写无关。

posted @ 2011-07-13 20:08 Glawind 阅读(232) 评论(0) 编辑
摘要: 一, 什么是虚函数(如果不知道虚函数为何物,但有急切的想知道,那你就应该从这里开始)  简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。下面来看一段简单的代码  class A{  public:  void ...阅读全文
posted @ 2010-05-22 14:27 Glawind 阅读(157) 评论(0) 编辑
摘要: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="System.Data" %> <HTML> <H...阅读全文
posted @ 2010-05-22 00:44 Glawind 阅读(1399) 评论(0) 编辑
摘要: //保存 sql="insert into p_ry_photo(id,photo) values ('"+id+"',@i)"; SqlCommand cmd=new SqlCommand(sql,CommonVar.SqlConDataBase); MemoryStream s = new MemoryStream(); picPhoto.Image.Save(s,...阅读全文
posted @ 2010-05-22 00:36 Glawind 阅读(422) 评论(0) 编辑
摘要: Q:我想对Gridview的一个字段进行超链接,如title列,首先显示title列的内容,同时将其超链接到另一个页面A1:在绑定好gridview数据后,选择编辑列-->在字段选择HyperLinkField,选择添加然后在右边的属性NavigateUrl选择你要链接的网址。Target选择_blank空白窗口打开。你可以测试一下看看。A2:添加列:<asp:GridView ID=...阅读全文
posted @ 2010-05-19 21:30 Glawind 阅读(839) 评论(0) 编辑