SQLServer常见问题应对
版权所有©ashuixu转载请保持完整并注明出处
SQL语句部分
1、SQL语句跨两个以上的数据库
问题:有时某个SQL语句需求使用两个以上的数据库,这样的SQL语句怎样写呢?
解答:采用DataBaseName..TableName来访问表就可以了。
举例:
2、婚配查询
问题:我要实现字符串的婚配查询,该怎样做呢?
解答:用like,请参见SQLServer2000的联机协助。在索引中输入“like”,内有非常详细的说明和示例。
补充:该问题的提出是由于笔者在查询所有面料包含文字“50%纯棉”的时候引出的,由于它包含一个或多个特殊通配符“%”。当笔者写出如下语句时:
执行结果为(非真实数据):
正确的写法是:
或:
3、交叉数据报表
问题:如何获取交叉数据查询结果?
解答:更为详细的内容请参见SQLServer2000联机协助。在索引中输入“交叉数据报表”,即可查看。
补充:在程序中可以先用Distinct或Group选出满足条件的所有交叉数据列,然后结构出交叉数据查询语句;如果想一个写存储过程用于前往数据结果集,可以使用游标、生成查询字符串,然后用系统存储过程sp_executesql执行该字符串。
4、都是尾部空格惹的祸
问题:在用like查询数据时,感觉本人写的SQL语句没有问题,就是得不到想要的数据,怎样回事呢?
解答:
A.由于数据存储方式的缘由,使用包含 char(固定长度) 和 varchar(可变长度) 数据模式的字符串比较可能无法通过 LIKE 比较。了解每种数据类型的存储方式以及导致 LIKE 比较失败的缘由十分重要。
B.当对 Unicode 数据(nchar 或 nvarchar 数据类型)使用 LIKE 时,尾随空格是有意义的。但是对于非 Unicode 数据,尾随空格没有意义。
补充:请读者本人在下面做一些试验,亲身感受一下其中的区别。
(未完待续……)