高分求解 -- 测试时候要注意的问题

HawaiiLeo 2003-11-26 01:58:25
把所有常用的db数据库中的字段的属性类型比如char形等用英文和中文分别写

然后要针对每个类型测试时候要注意的问题有的话就告诉我(这部分比较重要)
...全文
33 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
IDWB 2003-12-04
  • 打赏
  • 举报
回复
让别人去测试就行了,你在旁边看着不要说,有问题的时候记下来就行了,要多测,“乱”测
pengdali 2003-11-26
  • 打赏
  • 举报
回复
注意'号这个特殊字符:

select ' --想输出一个'但这样写是错的。

go

--应该:
select '''' [用''转义出']
--又如:

select '''''',char(39)
txlicenhe 2003-11-26
  • 打赏
  • 举报
回复
如果要存汉字,最好用nchar,nvarchar,ntext

使用 Unicode 数据
Unicode 标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案。所有的计算机都用单一的 Unicode 标准 Unicode 数据中的位模式一致地翻译成字符。这保证了同一个位模式在所有的计算机上总是转换成同一个字符。数据可以随意地从一个数据库或计算机传送到另一个数据库或计算机,而不用担心接收系统是否会错误地翻译位模式。

对于用一个字节编码每个字符的数据类型,存在的问题之一就是此数据类型只能表示 256 个不同的字符。这就迫使对于不同的字母表(例如相对较小的欧洲字母表)采用多重编码规格(或者代码页)。而且也不可能处理象日文汉字或韩国文字这样具有数千个字符的字母表。

每个 Microsoft® SQL Server™ 排序规则都有一个对表示 char、varchar 和 text 值中的每个字符定义位模式进行定义的代码页。可为个别的列和字符常量指派不同的代码页。客户端计算机使用与操作系统区域设置相关联的代码页解释字符位模式。有很多种不同的代码页。一些字符出现在某些代码页上,但并不出现在其它的代码页上。某些字符在一些代码页上用一个位模式定义,而在其它的代码页上却用另一个位模式定义。当您设计必须处理不同语言的国际性系统时,为了满足不同国家/地区的语言需求,给所有的计算机挑选代码页就变得困难了。要保证每一台计算机与使用不同代码页的系统交互时都进行正确的翻译也是困难的。

Unicode 规格通过采用两个字节编码每个字符使这个问题迎刃而解。转换最通用商业语言的单一规格具有足够多的 2 字节的模式 (65,536)。因为所有的 Unicode 系统均一致地采用同样的位模式来代表所有的字符,所以当从一个系统转到另一个系统时,将不会存在未正确转换字符的问题。通过在整个系统中使用 Unicode 数据类型,可尽量减少字符转换问题。

在 Microsoft SQL Server 中,以下数据类型支持 Unicode 数据:

nchar


nvarchar


ntext


说明 这些数据类型的前缀 n 来自 SQL-92 标准中的 National(Unicode)数据类型。

nchar、nvarchar 和 ntext 的用法分别与 char、varchar 和 text 的用法一样,但在以下方面不同:

Unicode支持的字符范围更大。


存储 Unicode 字符所需要的空间更大。


nchar 和 nvarchar 列最多可以有 4,000 个字符,而不象 char 和 varchar 字符那样可以有 8,000 个字符。


Unicode 常量使用 N 开头来指定:N'A Unicode string'。


所有 Unicode 数据都使用相同的 Unicode 代码页。排序规则不控制用于 Unicode 列的代码页,仅控制比较规则和是否区分大小写等特性。
pengdali 2003-11-26
  • 打赏
  • 举报
回复
注意各类型的精度范围:

整数
bigint

从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。

int

从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。

smallint

从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整数数据。

tinyint

从 0 到 255 的整数数据。

bit
bit

1 或 0 的整数数据。

decimal 和 numeric
decimal

从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。

numeric

功能上等同于 decimal。

money 和 smallmoney
money

货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 (+922,337,203,685,477.5807) 之间,精确到货币单位的千分之十。

smallmoney

货币数据值介于 -214,748.3648 与 +214,748.3647 之间,精确到货币单位的千分之十。

近似数字
float

从 -1.79E + 308 到 1.79E + 308 的浮点精度数字。

real

从 -3.40E + 38 到 3.40E + 38 的浮点精度数字。

datetime 和 smalldatetime
datetime

从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到百分之三秒(或 3.33 毫秒)。

smalldatetime

从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到分钟。

字符串
char

固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。

varchar

可变长度的非 Unicode 数据,最长为 8,000 个字符。

text

可变长度的非 Unicode 数据,最大长度为 2^31 - 1 (2,147,483,647) 个字符。

Unicode 字符串
nchar

固定长度的 Unicode 数据,最大长度为 4,000 个字符。

nvarchar

可变长度 Unicode 数据,其最大长度为 4,000 字符。sysname 是系统提供用户定义的数据类型,在功能上等同于 nvarchar(128),用于引用数据库对象名。

ntext

可变长度 Unicode 数据,其最大长度为 2^30 - 1 (1,073,741,823) 个字符。

二进制字符串
binary

固定长度的二进制数据,其最大长度为 8,000 个字节。

varbinary

可变长度的二进制数据,其最大长度为 8,000 个字节。

image

可变长度的二进制数据,其最大长度为 2^31 - 1 (2,147,483,647) 个字节。

pengdali 2003-11-26
  • 打赏
  • 举报
回复
用[]来屏蔽关键字:

select * form from --这个表就叫from

--应该这样写:
select * form [from]
pengdali 2003-11-26
  • 打赏
  • 举报
回复
declare @a char(10)
set @a='aa'

--------------
set @a=@a+'bb'
select @a --bb没有应为@a后面是空格

--应该:
set @a=rtrim(@a)+'bb'
select @a
zjcxc 2003-11-26
  • 打赏
  • 举报
回复
除楼上的外,还要注意.

字段名/表名中是否包含数字/空格等.

如:
字段名:1,a b
像上面的这种,引用的时候要用:[1],[a b]
pengdali 2003-11-26
  • 打赏
  • 举报
回复
注意排序规则对 字符类型的影响。

create table test (a varchar(100))
go
insert test values('aabb')
go
select * from Test where a collate chinese_prc_CS_Ai ='AaBb'
select * from test where a='AaBb'

更改排序规则。

alter database 数据库 collate 排序规格
pengdali 2003-11-26
  • 打赏
  • 举报
回复
nvarchar,nchar,ntext注意:


create database mmm
go
use mmm
go
ALTER DATABASE mmm COLLATE Latin1_General_Ci_Ai
go
create table test (a nvarchar(100))
go
insert test values(N'大力')
go
select * from test where a=N'大力'
select * from test where a='大力' --这句是错的。
SunnyJing0201 2003-11-26
  • 打赏
  • 举报
回复
黑盒测试,是一种广泛的测试方法,进行时就避免沿用程序设计的思路去测试,也就是用一个测试结果是百分百正确的数据流进行,这是一个误区!
程序设计人员进行这种测试时,一定要小心
HawaiiLeo 2003-11-26
  • 打赏
  • 举报
回复
劳驾各位大侠百忙之中能再抽出点时间讲讲(感谢了):

再说明一下是初学者用黑盒测试要注意的问题
HawaiiLeo 2003-11-26
  • 打赏
  • 举报
回复
谢谢大家的支持!

27,578

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧