回 帖 发 新 帖 刷新版面

主题:[讨论]今晚又遇到一个奇怪的问题,SQL中的函数使用问题

SELECT hname,         AT("*",hname),        AT("*",hname) FROM main1
SELECT            STR(AT("*",hname)),       AT("*",hname) FROM main1
SELECT hname,     STR(AT("*",hname)),       AT("*",hname) FROM main1

请问大家能看得出来以上三句代码的区别吗?
知道结果如何?
第三句的第二个字段是空值.

换一个表试试
SELECT LEFT(姓名,AT("六",姓名+" ")),LEFT(姓名,4),AT("六",姓名+"-") FROM 成绩
嗯,还是不行,只有前半个字,是不是其他字段干扰了?排除一下:
SELECT LEFT(姓名,AT("六",姓名)) FROM 成绩
郁闷收场.

这个AT( )和LEFT( ),STR( )等一起使用时,好像都会出现问题,但居然是不一定的.
有的时候没事,却有的时候却会出问题.

回复列表 (共4个回复)

沙发

嗯,跟函数无关,跟中文有关.

板凳

SELECT PADR(LEFT(姓名,AT("大",姓名+" ")-1),8),LEFT(姓名,4),AT("大",姓名+"-")+000000 ;
        FROM 员工年龄情况表20080115 ;
        WHERE AT("大",姓名+" ")>0

3 楼

SELECT PADR(LEFT(姓名,AT("六",姓名+" ")-1),8),LEFT(姓名,4),AT("六",姓名+"-")+0000 FROM 成绩
SELECT PADR(PADR(LEFT(姓名,AT("六",姓名+" ")-1),8),LEFT(姓名,4),AT("六",姓名+"-")+0000 FROM 员工年龄情况表20080115
SELECT LEFT(姓名,AT("大",姓名+" ")-1),8),LEFT(姓名,4),AT("六",姓名+"-")+0000 FROM 员工年龄情况表20080115

4 楼

嗯,让我想起来了很久以前的一个问题,
在不定长的字符串的SQL语句上,
以第一个获得的结果为后面的标准宽度,
于是后面的字符串便都被截断了.
这个提醒不错,谢谢.

我来回复

您尚未登录,请登录后再回复。点此登录或注册