标题:vb.net sql查询问题
只看楼主
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
结帖率:94.12%
已结贴  问题点数:20 回复次数:8 
vb.net sql查询问题
我有个问题想了好久总是未能搞定,恳请大家指教,如下:
 New SqlCommand("select*from gykp where th  &' '& mz ='" & Trim(lnth) & "'", conn)
过去在ACCSEE数据库中运行以上没有问题,但是在数据库改成 SQL server后就出现了nvarchar和varchar在'&'运算符中不兼容的错误提示!我也试图按网上的如此修改,CAST(th AS nvarchar) &' '& CAST(mz AS nvarchar)。但运行还是同样错误!
注:th与 mz 是gykp表中的二个字段……。谢谢!
搜索更多相关主题的帖子: server 数据库 where 网上 
2016-03-13 15:30
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:10 

把“&”替换成“+”吧,同时注意空格
你改成下面的语句试试:
New SqlCommand("select * from gykp where [th]+' '+[mz] ='" & Trim(lnth) & "'", conn)

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-03-15 13:56
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
得分:0 
兄弟你好!首先非常感谢你的回复!我试了一下还是不行。尤其是当其中的一个字段为期间时,如:mz还会出现字符串转换时间格式错误!我改成cast(mz as datetime),也不成。烦人哪,谢谢!
2016-03-16 09:59
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:0 
你的问题可能还需要描述得更仔细些。从你问题的查询语句分析,你是要实现[th]与[mz]两个字段的值中间加一个空格进行拼接后得到查询结果。
你是用ACCESS的,假设你的[mz]的字段是date格式,尝试用 format(cdate([mz]),'yyyymmdd')将日期格式转换为字符串。例如:
New SqlCommand("select * from gykp where [th]+' '+format([mz],'yyyymmdd') ='" & Trim(lnth) & "'", conn)

另外,你可以将Trim(lnth)模拟赋值么?我猜的结构是这样:New SqlCommand("select * from gykp where [th]+' '+format([mz],'yyyy-mm-dd') ='AA 2016-03-16'", conn),猜得对不?

[此贴子已经被作者于2016-3-16 11:50编辑过]


===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-03-16 11:41
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
得分:0 
太谢谢你了!
我以前用的是access数据库,采用select*from gykp where th  &' '& mz ='" & Trim(lnth) & "'",查询没有问题!但现在我还用sql server后就出现了如上所述的错误。lnth的格式是例如:aaa   2016-3-16。你猜的很对!看来兄弟是高人!哈哈。
2016-03-16 12:07
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
得分:0 
经试验错误提示:‘’format不是可识别的 内置函数名称‘’,哏~哈哈
2016-03-16 12:14
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:10 
sqlserver数据库不支持format,可以用convert函数转换:
convert(varchar(100),[mz],20)
New SqlCommand("select * from gykp where [th]+' '+convert(varchar(10),[mz],20) ='" & Trim(lnth) & "'", conn)

convert函数,详细请找度娘,看看convert函数的用法

[此贴子已经被作者于2016-3-16 14:37编辑过]


===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-03-16 14:30
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
得分:0 
convert(varchar(10),[mz],20)   '需保证[mz]字段是datetime格式,否则输出结果会出错。

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2016-03-16 14:39
shunlai
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-2-1
得分:0 
太谢谢你了!按你说的我修改了一下运行未中断,也无错误提示!但查询没结果,估计字段间空格或其它小问题。我再找找原因吧,再次像你表示感谢!
2016-03-16 15:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462441-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.143776 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved