当字符串中包含字符'〇'时如何进行查询和替换

shenboo 2008-09-24 03:31:18
我发现SQL中对字符'〇'的查询和替换总是有问题? 如何解决呢? 查'〇'的时候不包括'〇'的字符也出来了
...全文
181 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenboo 2008-10-21
  • 打赏
  • 举报
回复
谢谢17楼的答复. 顺便说一下. 18楼的不正确.
dlpseeyou 2008-10-05
  • 打赏
  • 举报
回复
REPLACE
pt1314917 2008-10-04
  • 打赏
  • 举报
回复

--这样。。

declare @t table(va varchar(10))
insert into @t select '34〇23'
insert into @t select 'sdafsadf'


select replace(va collate chinese_prc_bin,'〇','零') from @t


ws_hgo 2008-10-04
  • 打赏
  • 举报
回复
select replace('字段',N'〇',N'被这个字段代替') from tbname
shenboo 2008-10-01
  • 打赏
  • 举报
回复
非常感谢你的回答. 我试了一下. 行不通,系统提示错误.
select replace(va,'〇','') from @t collate chinese_prc_bin
不能这样使用.
另外, 我想做一个值函数 用来把所有含'〇'的字符串都替换为'零'. 应怎么做呢?
pt1314917 2008-09-29
  • 打赏
  • 举报
回复
晕倒,贴错了。

declare @t table(va varchar(10))
insert into @t select '34〇23'
insert into @t select 'sdafsadf'


select replace(va,'〇','') from @t collate chinese_prc_bin


pt1314917 2008-09-29
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 shenboo 的回复:]
感谢各位对本贴的支持. 我测试了一下 4楼是正确的. 还要感谢6楼的例子也完全正确. 不过6楼应试一下〇
不为第一个字符的情况, 如:'五〇七医院' 当我试此字符时 不能得到想要的结果.
感谢其它朋友对本贴的支持. 不过结果都不正确. 9楼返回所有内容.(包括不含〇)

现在我在4楼的帮助下已能查到这个字符了, 可是不能替换它们, 有那位有正确方法吗?
[/Quote]

declare @t table(va varchar(10))
insert into @t select '34〇23'
insert into @t select 'sdafsadf'


select * from @t where replace(va,'〇','') collate chinese_prc_bin

shenboo 2008-09-28
  • 打赏
  • 举报
回复
感谢各位对本贴的支持. 我测试了一下 4楼是正确的. 还要感谢6楼的例子也完全正确. 不过6楼应试一下〇
不为第一个字符的情况, 如:'五〇七医院' 当我试此字符时 不能得到想要的结果.
感谢其它朋友对本贴的支持. 不过结果都不正确. 9楼返回所有内容.(包括不含〇)

现在我在4楼的帮助下已能查到这个字符了, 可是不能替换它们, 有那位有正确方法吗?
yinqi025 2008-09-24
  • 打赏
  • 举报
回复
你的字还真奇怪/ch
nalnait 2008-09-24
  • 打赏
  • 举报
回复
ASCII
pengxuan 2008-09-24
  • 打赏
  • 举报
回复

select * from tb where charindex(字段名,'〇')>0
中国风 2008-09-24
  • 打赏
  • 举报
回复
select * from table where patindex('['+nchar(63)+nchar(12295)+']',Name)=0
小雨转晴 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dawugui 的回复:]
SQL codeselect*fromtbwherecharindex(N'〇', col)>0
[/Quote]

3楼 n是什么意思?谢谢
pl_mm 2008-09-24
  • 打赏
  • 举报
回复
恩 鹏鹏真确
fzcheng 2008-09-24
  • 打赏
  • 举报
回复

--测试数据
DECLARE @t TABLE (ID INT, MARK NVARCHAR(10))
INSERT INTO @t
SELECT 1,'〇' UNION ALL
SELECT 2,'〇' UNION ALL
SELECT 3,'〇' UNION ALL
SELECT 4,'B' UNION ALL
SELECT 5,'〇' UNION ALL
SELECT 6,'A'

SELECT * FROM @t WHERE MARK='〇'

UPDATE @t SET MARK=REPLACE(MARK,'A','〇')
SELECT * FROM @T
GO

ID MARK
----------- ----------
1 〇
2 〇
3 〇
5 〇

(4 row(s) affected)


(6 row(s) affected)

ID MARK
----------- ----------
1 〇
2 〇
3 〇
4 B
5 〇
6 〇

(6 row(s) affected)


有什么问题哦..测试没有问题啊.
ximizhi 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pl_mm 的回复:]
SQL codeselect replace(列,'〇','') from tbname
[/Quote]

就这样替换 应该不会有问题吧!
pt1314917 2008-09-24
  • 打赏
  • 举报
回复

--排序规则的原因:
declare @t table(va varchar(10))
insert into @t select '34〇23'
insert into @t select 'sdafsadf'

select * from @t where va like '%〇%'
--结果:
va
----------
34〇23
sdafsadf

select * from @t where va like '%〇%' collate chinese_prc_bin
--结果:
va
----------
34〇23

dawugui 2008-09-24
  • 打赏
  • 举报
回复
select * from tb where charindex(N'〇' , col) > 0
dawugui 2008-09-24
  • 打赏
  • 举报
回复
N'〇'
pl_mm 2008-09-24
  • 打赏
  • 举报
回复
select replace(列,'〇','') from tbname

34,590

社区成员

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

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