select distinct * from 表

Gooder 2003-06-15 06:41:17
select distinct * from 表
这语句如何去区分全角与半角啊
例如我库里面有
a(1)
a(1)
这两条记录的区别就仅在于括号,一个是全角,一个是半角
但现在执行语句后主只能取得一条记录,我希望结果两条记录,即把全角和半角看成不一样的,问应该如何呢?
...全文
136 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gooder 2003-06-16
  • 打赏
  • 举报
回复
很好,谢谢happydreamer和pengdali
虽然你们的方法没试过,但看了之后,我相信一定可以
happydreamer 2003-06-15
  • 打赏
  • 举报
回复

select distinct dbo.全半角(你的列名,'半角') 别名 from 表
union all
select distinct dbo.全半角(你的列名,'全角') 别名 from 表
thinkpad99 2003-06-15
  • 打赏
  • 举报
回复
so far so good
CrazyFor 2003-06-15
  • 打赏
  • 举报
回复
不明白楼主想要做什么??
czl1981 2003-06-15
  • 打赏
  • 举报
回复
看不懂!
pengdali 2003-06-15
  • 打赏
  • 举报
回复
你用:

select distinct dbo.全半角(你的列名,'半角') 别名 from 表
pengdali 2003-06-15
  • 打赏
  • 举报
回复
create function 全半角 (@str Nvarchar(4000),@flag nchar(4))
returns nvarchar(4000)
as
begin
declare @ nvarchar(4000)
set @=N''
if @flag=N'全角'
while @str<>N''
select @=@+case when unicode(left(@str,1)) between 33 and 126 then nchar(unicode(left(@str,1))+65248) else left(@str,1) end,@str=substring(@str,2,4000)
else
while @str<>N''
select @=@+case when unicode(left(@str,1)) between 65281 and 65374 then nchar(unicode(left(@str,1))-65248) else left(@str,1) end,@str=substring(@str,2,4000)
return @
end
go

select dbo.全半角(N'12453ga的sd(a4ss57890','全角')

select dbo.全半角(N'12453ga的s(da4ss57890','半角')

34,590

社区成员

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

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