关于用select查询的时候,空格的问题。

qintian1114 2008-01-31 06:49:27
在 Sql server 2000 的表中,

有一个字段 username 为 nvarchar(20) 类型,

我在查询的时候输入 “张三 ”,我故意在后面多输入了几个空格,

即 select * from table1 where username='张三 '

很奇怪,表中username字段对应“张三”的那条记录却搜索出来了。

请问这是为什么啊?

我怎么样能在用户输入的字符串后面多了空格的情况下,使记录不显示出来呢?谢谢!
...全文
563 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fydm263162 2008-02-02
  • 打赏
  • 举报
回复
把username的字段类型改为nchar(20)试试
ALTER TABLE yourtablename
ALTER COLUMN username nchar(20)
JiangHongTao 2008-01-31
  • 打赏
  • 举报
回复
select   *   from   table1   where   username+'1'='张三         1' 
qintian1114 2008-01-31
  • 打赏
  • 举报
回复
谢谢楼上的大哥,

我还想问一下,这个能不能在数据库里面设置呢?

让它不自动过滤掉空格。谢谢。
liangCK 2008-01-31
  • 打赏
  • 举报
回复
select * from table1 
where convert(varbinary,username)=convert(varbinary,'张三 ')
qintian1114 2008-01-31
  • 打赏
  • 举报
回复
select * from table1 where username='张三 '

我的意思是不要让它自动去掉后面的空格,就是我要让上面的sql语句查询出来的结果为空,不要显示出“张三”的那条记录来。谢谢。
liangCK 2008-01-31
  • 打赏
  • 举报
回复
select * from 业务表 

select * from 业务表 where No='001 '

select * from 业务表 where No=' 001'

/*
No 更新日期 Status User
---- ------------------------------------------------------ ----------- -----------
001 2008-01-14 21:21:00.000 1 1
002 2008-01-14 21:21:00.000 1 2
003 2008-01-14 21:21:00.000 2 1
004 2008-01-15 21:21:00.000 2 3
005 2008-01-15 21:21:00.000 3 2
006 2008-01-16 21:21:00.000 3 3

(所影响的行数为 6 行)

No 更新日期 Status User
---- ------------------------------------------------------ ----------- -----------
001 2008-01-14 21:21:00.000 1 1

(所影响的行数为 1 行)

No 更新日期 Status User
---- ------------------------------------------------------ ----------- -----------

(所影响的行数为 0 行)

*/
liangCK 2008-01-31
  • 打赏
  • 举报
回复
会自动去掉后导空格..不过前导空格不会自动去掉.

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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