注册 登录
编程论坛 ASP技术论坛

求救:在ASP中SQL的语句中如何来截取字符串

sylknb 发布于 2008-05-18 15:43, 1969 次点击
StrSQL = "DELETE FROM 运货商 WHERE 电话 = '&"left(电话,4)=0571&"'"
 我是要把电话号码前面是0571的人都删除,上面的语句为什么程序不能通过?
错误类型:
Microsoft VBScript 编译器错误 (0x800A0401)
语句未结束
/wuf55.asp, line 6, column 40
StrSQL = "DELETE FROM 运货商 WHERE 电话 = '&"left(电话,4)=0571&"'"
8 回复
#2
yms1232008-05-18 15:48
StrSQL = "DELETE FROM 运货商 WHERE 电话 Like '0571%'"
楼主应该学习一下SQL中的模糊查询技巧,SQL中一般像楼主的查询都是使用模糊查询的方法来实现,而不是截取字符串。
http://www.kingsnet.biz/Article/database/application/200804/8882.html
#3
rjbcxhc2008-05-18 16:00
顶!!
#4
multiple19022008-05-18 16:35
楼主的代码从语法上也是说不通的。

楼主要在SQL语句中截取字符串——但是引用的left函数却是VBScript的函数,这样的SQL语句是写不出来的。而且,语句未结束
#5
tianyu1232008-05-18 17:30
应该这样写
StrSQL="Delete from 运货商 where left(电话,4)='0571'"
#6
multiple19022008-05-18 20:18
嗯,要注意楼上代码里的Left是在数据库引擎中调用的,和VBScript里的Left不是完全一样的Left。所以,VBScript里定义的自定义函数不能用于SQL语句。
#7
sylknb2008-05-20 16:50
到底如何?有一个权威讲法?
#8
feelingxj2008-05-20 23:53
不能完全同意版主的解释,版主是用了模糊查询,但楼主的意思是用LEFT。
StrSQL = "DELETE FROM 运货商 WHERE 电话 = '&"left(电话,4)=0571&"'"
可以这样:
StrSQL = "DELETE FROM 运货商 WHERE Left(电话,4) = '"&0571&"'"
#9
feelingxj2008-05-20 23:54
以下摘自SQLSERVER帮助,应该是比较权威的。建议楼主SQL语法问题可以查阅相关帮助。
LEFT
返回从字符串左边开始指定个数的字符。

语法
LEFT ( character_expression , integer_expression )

参数
character_expression

字符或二进制数据表达式。character_expression 可以是常量、变量或列。character_expression 必须是可以隐式地转换为 varchar 的数据类型。否则,请使用 CAST 函数显式转换 character_expression。

integer_expression

是正整数。如果 integer_expression 为负,则返回空字符串。

返回类型
varchar
1