如何判断文本文件编码
[ 2006/03/01 23:31 | by ipaddr ]
根据不同编码的特点和标志,对一个文本文件判断编码方法如下
1 . UTF7 所有字节的内容不会大于127,也就是不大于&HFF
2 . UTF8 起始三个字节为"EF BB BF"
3 . UTF16BigEndian 起始三个字节为"FE FF"
4 . UTF16SmallEndian 起始三个字节为"FF FE"
注: BigEndian 和SmallEndian 表示存储方式的高位在前或者低位
在前,高位在前叫BigEndian 反之叫SmallEndian
>>>>>>>>>
1 . UTF7 所有字节的内容不会大于127,也就是不大于&HFF
2 . UTF8 起始三个字节为"EF BB BF"
3 . UTF16BigEndian 起始三个字节为"FE FF"
4 . UTF16SmallEndian 起始三个字节为"FF FE"
注: BigEndian 和SmallEndian 表示存储方式的高位在前或者低位
在前,高位在前叫BigEndian 反之叫SmallEndian
>>>>>>>>>
Ghost for Linux 出色的硬盘对拷工具
[ 2006/02/23 23:32 | by ipaddr ]
Ghost for Linux 出色的硬盘对拷工具
语言种类: 英文
版 本 号: V0.14 beta ISO
文件大小: 10163 K
系统平台: Linux
软件厂商: frastep
软件主页: https://sourceforge.net/projects/g4l
软件介绍: 一个出色的硬盘对拷工具,它可以把一个磁盘上的全部内容复制到另外一个磁盘上,也可以把磁盘内容复制为一个磁盘的镜像文件,以后你可以用镜像文件创建一个原始磁盘的拷贝。它可以最大限度地减少你每次安装操作系统的时间,如果你有好几台配置相似的机器需要安装系统,你会发现使用GHOST使事情变得十分简单。>>>>>>>
语言种类: 英文
版 本 号: V0.14 beta ISO
文件大小: 10163 K
系统平台: Linux
软件厂商: frastep
软件主页: https://sourceforge.net/projects/g4l
软件介绍: 一个出色的硬盘对拷工具,它可以把一个磁盘上的全部内容复制到另外一个磁盘上,也可以把磁盘内容复制为一个磁盘的镜像文件,以后你可以用镜像文件创建一个原始磁盘的拷贝。它可以最大限度地减少你每次安装操作系统的时间,如果你有好几台配置相似的机器需要安装系统,你会发现使用GHOST使事情变得十分简单。>>>>>>>
深入了解Linux的守护进程
[ 2006/02/23 23:31 | by ipaddr ]
Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。守
护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,比如,作业规划进程crond、打印进程lqd等。有些书籍和资料也把守护进程称作:“服务”。选择运行哪些守护进程,要根据具体需求决定。查看系统可以提供的守护进程对应的服务,使用下面方法,以root权限运行:
>>>
护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,比如,作业规划进程crond、打印进程lqd等。有些书籍和资料也把守护进程称作:“服务”。选择运行哪些守护进程,要根据具体需求决定。查看系统可以提供的守护进程对应的服务,使用下面方法,以root权限运行:
>>>
小谈MySQL字符集(转)
[ 2006/02/22 23:27 | by ipaddr ]
首先,这片文章纯粹是我的个人经验之谈,适用于我常见的环境及项目中.
个人建议,数据库字符集尽量使用utf8(utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上无法正确查看数据库中的内容,我依然强烈建议使用utf8作为默认字符集.
接下来是完整的一个例子:
1.创建数据库表
mysql>CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
#注意后面这句话 "COLLATE utf8_general_ci",大致意思是在排序时根据utf8变码格式来排序
#那么在这个数据库下创建的所有数据表的默认字符集都会是utf8了
mysql>create table my_table (name varchar(20) not null default '')type=myisam default charset utf8;
#这句话就是创建一个表了,制定默认字符集为utf8
2.写数据
例子1是通过php直接插入数据:
a.php
<?php
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的
//它的作用是设置本次数据库联接过程中,数据传输的默认字符集
mysql_query("set names utf8;");
//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数
mysql_query(mb_convet_encoding("insert into my_table values('测试');", "utf-8", "gb2312"));
?>
例子是通过页面提交插入数据2:
b.php
<?php
//输出本页编码为utf-8
header("content-type:text/html; charset=utf-8");
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
if(isset($_REQUEST['name'))
{
//由于上面已经指定本页字符集为utf-8了,因此无需转换编码
mysql_query(sprintf("insert into my_table values('%s');", $_REQUEST['name']));
}
$q = mysql_query("select * from my_table");
while($r = mysql_fetch_row($q))
{
print_r($r);
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<form action="" method="post">
<input type="text" name="name" value="">
<input type="submit" value='submit'>
</form>
自此,使用utf8字符集的完整的例子结束了.
如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束,例如:
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;
附:旧数据升级办法
以原来的字符集为latin1为例,升级成为utf8的字符集。原来的表: old_table (default charset=latin1),新表:new_table(default charset=utf8)。
第一步:导出旧数据
mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql
第二步:转换编码
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
在这里,假定原来的数据默认是gb2312编码。
第三步:导入
修改old.sql,增加一条sql语句: "SET NAMES utf8;",保存。
mysql -hlocalhost -uroot my_db < new.sql
大功告成!!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
个人建议,数据库字符集尽量使用utf8(utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上无法正确查看数据库中的内容,我依然强烈建议使用utf8作为默认字符集.
接下来是完整的一个例子:
1.创建数据库表
mysql>CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
#注意后面这句话 "COLLATE utf8_general_ci",大致意思是在排序时根据utf8变码格式来排序
#那么在这个数据库下创建的所有数据表的默认字符集都会是utf8了
mysql>create table my_table (name varchar(20) not null default '')type=myisam default charset utf8;
#这句话就是创建一个表了,制定默认字符集为utf8
2.写数据
例子1是通过php直接插入数据:
a.php
<?php
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的
//它的作用是设置本次数据库联接过程中,数据传输的默认字符集
mysql_query("set names utf8;");
//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数
mysql_query(mb_convet_encoding("insert into my_table values('测试');", "utf-8", "gb2312"));
?>
例子是通过页面提交插入数据2:
b.php
<?php
//输出本页编码为utf-8
header("content-type:text/html; charset=utf-8");
mysql_connect('localhost','user','password');
mysql_select_db('my_db');
if(isset($_REQUEST['name'))
{
//由于上面已经指定本页字符集为utf-8了,因此无需转换编码
mysql_query(sprintf("insert into my_table values('%s');", $_REQUEST['name']));
}
$q = mysql_query("select * from my_table");
while($r = mysql_fetch_row($q))
{
print_r($r);
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<form action="" method="post">
<input type="text" name="name" value="">
<input type="submit" value='submit'>
</form>
自此,使用utf8字符集的完整的例子结束了.
如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询排序等问题,可以使用binary属性约束,例如:
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;
附:旧数据升级办法
以原来的字符集为latin1为例,升级成为utf8的字符集。原来的表: old_table (default charset=latin1),新表:new_table(default charset=utf8)。
第一步:导出旧数据
mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql
第二步:转换编码
iconv -t utf-8 -f gb2312 -c old.sql > new.sql
在这里,假定原来的数据默认是gb2312编码。
第三步:导入
修改old.sql,增加一条sql语句: "SET NAMES utf8;",保存。
mysql -hlocalhost -uroot my_db < new.sql
大功告成!!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
年度最令人喷饭的N条短信
[ 2006/02/19 23:39 | by ipaddr ]
丫头,等我有了钱,我要用人头马给你冲厕所,用美钞给你点烟,用999朵玫瑰给你洗泡泡浴,用波音飞机接你上下班,用还珠格格给当丫鬟!行不?
上联:风在刮,雨在下,我在等你回电话;下联:为你生,为你死,为你守候一辈子!横批:发错人了。
一农户明天杀鸡,晚上喂鸡时说:快吃吧,这是你最后一顿!第二日见鸡已躺倒并留遗书:爷已吃老鼠药,你们也别想吃爷,爷也不是好惹的
人活着真累!上车得排队,单恋真受罪,吃饭没香味,喝酒容易醉,上班特疲惫,抢劫还不会,挣钱得交税,就连给小猪发个短信还得收费!
等一列地铁要五分钟,看一场电影要三小时,月缺月圆需一月,春去春来需一年,想念一个人需一生,可是说一句关心的话只需一秒钟:天凉了窝里多垫点草。
蜈蚣被蛇咬了,为防毒液扩散必须截肢!蜈蚣想:幸亏我腿多。大夫安慰道:“兄弟, 想开点,你以后就是蚯蚓了。”
大哥大与子母机结婚生下小灵通,小灵通面目可憎,信号奇差,又不能漫游,不能互发短信,伤心欲绝,经DNA检测,才发现其亲爹不是大哥大,是对讲机。
你都老大不小了,有些事该让你知道了:天,是用来刮风的;地,是用来长草的;我,是用来证明人类伟大的;你,就是用来炖粉条的。
龟和蛇逛公园,只有一张票,龟让蛇缠在脖上。入园时,剪票的鹰说:站住。龟蛇慌张,鹰又说:看你那鳖样,还打领带呢!
饥渴的我无法抗拒你的诱惑。跟你亲密接触时你令我产生了阵阵无法言表的快感,感觉地球在旋转,很想和你大干一场又怕将肚子搞大……亲爱的啤酒
下雨了精神病院里好多傻子拿着毛巾香皂在雨里洗澡,只有你独自在窗台看着,有人好奇地问:你在干什么呢?你说那群傻子笨的很,我等水热了再去。
以打架为锻炼身体,以谈判为练习口才!以敲诈为经济来源,以打劫为反应练习!以绑架为智力游戏,以坐牢为最终目的!这就是我!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
上联:风在刮,雨在下,我在等你回电话;下联:为你生,为你死,为你守候一辈子!横批:发错人了。
一农户明天杀鸡,晚上喂鸡时说:快吃吧,这是你最后一顿!第二日见鸡已躺倒并留遗书:爷已吃老鼠药,你们也别想吃爷,爷也不是好惹的
人活着真累!上车得排队,单恋真受罪,吃饭没香味,喝酒容易醉,上班特疲惫,抢劫还不会,挣钱得交税,就连给小猪发个短信还得收费!
等一列地铁要五分钟,看一场电影要三小时,月缺月圆需一月,春去春来需一年,想念一个人需一生,可是说一句关心的话只需一秒钟:天凉了窝里多垫点草。
蜈蚣被蛇咬了,为防毒液扩散必须截肢!蜈蚣想:幸亏我腿多。大夫安慰道:“兄弟, 想开点,你以后就是蚯蚓了。”
大哥大与子母机结婚生下小灵通,小灵通面目可憎,信号奇差,又不能漫游,不能互发短信,伤心欲绝,经DNA检测,才发现其亲爹不是大哥大,是对讲机。
你都老大不小了,有些事该让你知道了:天,是用来刮风的;地,是用来长草的;我,是用来证明人类伟大的;你,就是用来炖粉条的。
龟和蛇逛公园,只有一张票,龟让蛇缠在脖上。入园时,剪票的鹰说:站住。龟蛇慌张,鹰又说:看你那鳖样,还打领带呢!
饥渴的我无法抗拒你的诱惑。跟你亲密接触时你令我产生了阵阵无法言表的快感,感觉地球在旋转,很想和你大干一场又怕将肚子搞大……亲爱的啤酒
下雨了精神病院里好多傻子拿着毛巾香皂在雨里洗澡,只有你独自在窗台看着,有人好奇地问:你在干什么呢?你说那群傻子笨的很,我等水热了再去。
以打架为锻炼身体,以谈判为练习口才!以敲诈为经济来源,以打劫为反应练习!以绑架为智力游戏,以坐牢为最终目的!这就是我!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Snort 用户手册
[ 2006/02/10 23:42 | by ipaddr ]
Snort 用户手册
第一章 snort简介
snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并
作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,
而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动
作。
>>>>>>>>>>>>
第一章 snort简介
snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并
作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网路入侵检测模式是最复杂的,
而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动
作。
>>>>>>>>>>>>
入侵测系统+主动防火墙(Snort+Guardian的安装)
[ 2006/02/10 23:42 | by ipaddr ]
Snort 是一个开源的轻量级入侵监测系统,可以监测网络上的异常情况,给出报告;
Guardian是基于Snort+IPTables的一个主动防火墙,它分析Snort的日志文件,根据一定的判据自动将某些恶意的IP自动加入IPTables的输入链,将其数据包丢弃。
我自使用Snort+Guardian以来,每天可以看到很多的恶意行为被终止,心里很是高兴!
推荐大家使用!
安装步骤:
1)安装Snort:
*现在Snort & Guardian,目前下载地址为:
http://www.snort.org/dl/snort-2.3.0RC2.tar.gz
http://www.snort.org/dl/contrib/other_tools/guardian/guardian-1.6.tar.gz
*将上述文件拷贝至/tmp
*tar zxvf *.tgz
*cd snort-2.3.0RC2
*./configure
*make
*make install
*mkdir /etc/snort
*cd /etc/snort
*wget http://www.snort.org/dl/rules/snortrules-snapshot-CURRENT.tar.gz
* tar zxvf snortrules-snapshot-CURRENT.tar.gz
*mkdir /var/log/snort
*cd /etc
*vi snort.conf
修改后一些关键设置如下:
var HOME_NET yournetwork
var RULE_PATH /etc/snort/rules
preprocessor http_inspect: global \
iis_unicode_map /etc/snort/rules/unicode.map 1252
include /etc/snort/rules/reference.config
include /etc/snort/rules/classification.config
如:yournetwork 220.8.0.0/16
同时,可以选择将类似
include $RULE_PATH/local.rules
等,前面的#号去掉,设置自己的规则集
* /usr/local/bin/snort -D -l /var/log/snort -c /etc/snort.conf
* 将上一条命令写入/etc/rc.d/rc.local
2)安装guardian---需要perl支持
* cd /tmp
* tar zxvf guardian-1.6.tar.gz
* cd guardian-1.6
* echo > /etc/guardian.ignore
* cp guardian.pl /usr/local/bin/.
* cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh
* cp scripts/iptables_unblock.sh /usr/local/bin/guardian_unblock.sh
* cp guardian.conf /etc/.
* vi /etc/guardian.conf
如下:
HostGatewayByte 1
# guardian的日志文件
LogFile /var/log/guardian.log
#guardian从何处读取snort的日志
AlertFile /var/log/snort/alert
#将你需要忽略的IP放在此文件中
IgnoreFile /etc/guardian.ignore
# 封锁IP的最长时间,99999999为没有时限
TimeLimit 86400
* /usr/bin/perl /usr/local/bin/guardian.pl -c /etc/guardian.conf
* 将上一条命令加入 /etc/rc.d/rc.local
至此,完成设置
注意:
1)snort的规则文件经常更新,可以使用如下脚本自动更新:
#!/bin/sh
cd /etc/snort
wget http://www.snort.org/dl/rules/snortrules-snapshot-CURRENT.tar.gz
tar zxvf snortrules-snapshot-CURRENT.tar.gz
exit 0
*将上述脚本存为snortupdate,并放置到/etc/cron.daily/下,可以每天更新一次;
2)guardian有时会自动退出,可以使用如下脚本解决:
#!/bin/sh
/usr/local/bin/killguardian
/usr/local/bin/guardian.pl -c /etc/guardian.conf
exit 0
将上述脚本存为restartguardian,放置到/usr/local/bin
同时,crontab -e,加入如下一句:
* */6 * * * /usr/local/bin/restartguardian
意思为:每6小时重新启动guardian
脚本:killguardian
#!/usr/bin/perl
#杀死当前guardian.pl进程,需要安装perl module Proc::ProcessTable
#访问http://www.cpan.org可以获得上述module
use Proc::ProcessTable;
$t = new Proc::ProcessTable;
foreach $p (@{$t->table})
{
kill 9, $p->pid if $p->cmndline =~ 'guardian.pl';
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Guardian是基于Snort+IPTables的一个主动防火墙,它分析Snort的日志文件,根据一定的判据自动将某些恶意的IP自动加入IPTables的输入链,将其数据包丢弃。
我自使用Snort+Guardian以来,每天可以看到很多的恶意行为被终止,心里很是高兴!
推荐大家使用!
安装步骤:
1)安装Snort:
*现在Snort & Guardian,目前下载地址为:
http://www.snort.org/dl/snort-2.3.0RC2.tar.gz
http://www.snort.org/dl/contrib/other_tools/guardian/guardian-1.6.tar.gz
*将上述文件拷贝至/tmp
*tar zxvf *.tgz
*cd snort-2.3.0RC2
*./configure
*make
*make install
*mkdir /etc/snort
*cd /etc/snort
*wget http://www.snort.org/dl/rules/snortrules-snapshot-CURRENT.tar.gz
* tar zxvf snortrules-snapshot-CURRENT.tar.gz
*mkdir /var/log/snort
*cd /etc
*vi snort.conf
修改后一些关键设置如下:
var HOME_NET yournetwork
var RULE_PATH /etc/snort/rules
preprocessor http_inspect: global \
iis_unicode_map /etc/snort/rules/unicode.map 1252
include /etc/snort/rules/reference.config
include /etc/snort/rules/classification.config
如:yournetwork 220.8.0.0/16
同时,可以选择将类似
include $RULE_PATH/local.rules
等,前面的#号去掉,设置自己的规则集
* /usr/local/bin/snort -D -l /var/log/snort -c /etc/snort.conf
* 将上一条命令写入/etc/rc.d/rc.local
2)安装guardian---需要perl支持
* cd /tmp
* tar zxvf guardian-1.6.tar.gz
* cd guardian-1.6
* echo > /etc/guardian.ignore
* cp guardian.pl /usr/local/bin/.
* cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh
* cp scripts/iptables_unblock.sh /usr/local/bin/guardian_unblock.sh
* cp guardian.conf /etc/.
* vi /etc/guardian.conf
如下:
HostGatewayByte 1
# guardian的日志文件
LogFile /var/log/guardian.log
#guardian从何处读取snort的日志
AlertFile /var/log/snort/alert
#将你需要忽略的IP放在此文件中
IgnoreFile /etc/guardian.ignore
# 封锁IP的最长时间,99999999为没有时限
TimeLimit 86400
* /usr/bin/perl /usr/local/bin/guardian.pl -c /etc/guardian.conf
* 将上一条命令加入 /etc/rc.d/rc.local
至此,完成设置
注意:
1)snort的规则文件经常更新,可以使用如下脚本自动更新:
#!/bin/sh
cd /etc/snort
wget http://www.snort.org/dl/rules/snortrules-snapshot-CURRENT.tar.gz
tar zxvf snortrules-snapshot-CURRENT.tar.gz
exit 0
*将上述脚本存为snortupdate,并放置到/etc/cron.daily/下,可以每天更新一次;
2)guardian有时会自动退出,可以使用如下脚本解决:
#!/bin/sh
/usr/local/bin/killguardian
/usr/local/bin/guardian.pl -c /etc/guardian.conf
exit 0
将上述脚本存为restartguardian,放置到/usr/local/bin
同时,crontab -e,加入如下一句:
* */6 * * * /usr/local/bin/restartguardian
意思为:每6小时重新启动guardian
脚本:killguardian
#!/usr/bin/perl
#杀死当前guardian.pl进程,需要安装perl module Proc::ProcessTable
#访问http://www.cpan.org可以获得上述module
use Proc::ProcessTable;
$t = new Proc::ProcessTable;
foreach $p (@{$t->table})
{
kill 9, $p->pid if $p->cmndline =~ 'guardian.pl';
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
SQLServer的ISNULL应用举例
[ 2006/02/09 23:28 | by ipaddr ]
ISNULL
使用指定的替换值替换 NULL。
语法
ISNULL ( check_expression , replacement_value )
参数
check_expression
将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。
replacement_value
在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。
返回类型
返回与 check_expression 相同的类型。
注释
如果 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value。
示例
A. 将 ISNULL 与 AVG 一起使用
下面的示例查找所有书的平均价格,用值 $10.00 替换 titles 表的 price 列中的所有 NULL 条目。
USE pubs
GO
SELECT AVG(ISNULL(price, $10.00))
FROM titles
GO
下面是结果集:
--------------------------
14.24
(1 row(s) affected)
B. 使用 ISNULL
下面的示例为 titles 表中的所有书选择书名、类型及价格。如果一个书名的价格是 NULL,那么在结果集中显示的价格为 0.00。
USE pubs
GO
SELECT SUBSTRING(title, 1, 15) AS Title, type AS Type,
ISNULL(price, 0.00) AS Price
FROM titles
GO
C. 在Full Join情况下使用ISNULL
表A:
tid
uid
anum
表B:
tbid
uid
bnum1
bnum2
需要通过uid全连接两个表:
select a.tid,a.uid,a.anum,b.bnum1,b.bnum2 from a full join b on a.uid=b.uid
全连接会有很多为空的情况,可以使用ISNull来解决,改为:
select isnull(a.tid,b.tid),isnull(a.uid,b.uid),isnull(a.anum,0),isnull(b.bnum1,0),isnull(b.bnum2,0) from a full join b on a.uid=b.uid
前部分引用SQL参考手册(一直漂注)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
使用指定的替换值替换 NULL。
语法
ISNULL ( check_expression , replacement_value )
参数
check_expression
将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。
replacement_value
在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。
返回类型
返回与 check_expression 相同的类型。
注释
如果 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value。
示例
A. 将 ISNULL 与 AVG 一起使用
下面的示例查找所有书的平均价格,用值 $10.00 替换 titles 表的 price 列中的所有 NULL 条目。
USE pubs
GO
SELECT AVG(ISNULL(price, $10.00))
FROM titles
GO
下面是结果集:
--------------------------
14.24
(1 row(s) affected)
B. 使用 ISNULL
下面的示例为 titles 表中的所有书选择书名、类型及价格。如果一个书名的价格是 NULL,那么在结果集中显示的价格为 0.00。
USE pubs
GO
SELECT SUBSTRING(title, 1, 15) AS Title, type AS Type,
ISNULL(price, 0.00) AS Price
FROM titles
GO
C. 在Full Join情况下使用ISNULL
表A:
tid
uid
anum
表B:
tbid
uid
bnum1
bnum2
需要通过uid全连接两个表:
select a.tid,a.uid,a.anum,b.bnum1,b.bnum2 from a full join b on a.uid=b.uid
全连接会有很多为空的情况,可以使用ISNull来解决,改为:
select isnull(a.tid,b.tid),isnull(a.uid,b.uid),isnull(a.anum,0),isnull(b.bnum1,0),isnull(b.bnum2,0) from a full join b on a.uid=b.uid
前部分引用SQL参考手册(一直漂注)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
http://uptime.netcraft.com/
这个站点,可以用来查询主机的操作系统,WEB服务器,之类的信息。
>>>
这个站点,可以用来查询主机的操作系统,WEB服务器,之类的信息。
>>>
关于win2000下php取sql server 库中时间字段的问题
[ 2006/02/07 23:37 | by ipaddr ]
开发环境是win2000+sql server+php4
数据表中时间字段名是ldt ,字段类型是datetime
我写的代码如下:
$query = "select * from table";
$result = mssql_query($query) or die("无法执行SQL:$query");
while ($myrow=mssql_fetch_array($result))
{
echo $myrow["ldt"];
}
默认情况下,PHP将输出2006 二月 6 10:46,这显然不是我们想要的输出格式。
需要修改PHP的配置,将php.ini中mssql.datetimeconvert = Off就可以了。
注:Windows下PHP连接MSSqlServer,需要把开php.ini里的extension=php_mssql.dll,并且,需要拷ntwdblib.dll到 \winnt\system32目录
>>>>>>>>>>>>>>>>>>>>
数据表中时间字段名是ldt ,字段类型是datetime
我写的代码如下:
$query = "select * from table";
$result = mssql_query($query) or die("无法执行SQL:$query");
while ($myrow=mssql_fetch_array($result))
{
echo $myrow["ldt"];
}
默认情况下,PHP将输出2006 二月 6 10:46,这显然不是我们想要的输出格式。
需要修改PHP的配置,将php.ini中mssql.datetimeconvert = Off就可以了。
注:Windows下PHP连接MSSqlServer,需要把开php.ini里的extension=php_mssql.dll,并且,需要拷ntwdblib.dll到 \winnt\system32目录
>>>>>>>>>>>>>>>>>>>>