Archive for the ‘sql’ Category

mysql里面的int(m)

星期二, 2月 24th, 2009

写过varchar(10)或者char(8)之类的sql表定义之后,可能会认为int(10)也是类似的作用,比如定义一个多少位的整数,所以有时能见到int(8),int(4)的写法,然而这是不对的。

int(m)真正的含义是当这个整数使用零填充(zerofill)的时候,最多填充零到哪个位。

对于SQL中的整数,下表是它们所规定的最大最小数。

类型 字节数 最小值 最大值
(有符号/无符号) (有符号/无符号)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615

而如果需要描述得更具体得整数范围时,也可以使用Decimal(m,d),将后面的参数d设成0,表示不使用小数点后面的位,就是整数了。

用SQL语句筛选域名

星期五, 2月 20th, 2009

域名的主体部分是由数字(0-9)字母(a-z)以及符号”-”组成的,其中符号“-”不能在开头或结尾,也就是说域名至少有一个字母或数字。

在每天掉下来的几万个域名中筛选想要的域名,一个基本的方法就是区分这些数字和域名,用mysql的正则表达式可以这么写:

1.不包含“-”的:where `name` not like ‘%-%’

即名称中不包含“-”符号

2.不包含数字的:where `name` not regexp ‘[^a-z-]‘

即名称中只包含字母和“-”符号

3.不包含字母的:where `name` not regexp ‘[^0-9-]‘

即名称中只包含数字和“-”符号

4.只包含字母的:where `name` regexp ‘^[[:alpha:]]+$’

即整串都是字母组成

5.只包含数字的:where `name` regexp ‘^[[:digit:]]+$’

即整串都是数字组成

程序中为了书写方便,也可以直接用AND用1/2/3组合出4/5来。