
半角逗号转换成全角逗号的SQL数据库命令语句!100分!诚心求教!谢谢!
数据库中,一表名称是:inventory其中有一个字段:cInvName,在字段:cInvName中存在上千行的半角逗号,需要,用命令将该字段cInvName中的逗号,转...
数据库中,一表名称是:inventory 其中有一个字段:cInvName,在字段:cInvName中存在上千行的半角逗号,需要,用命令将该字段cInvName中的逗号,转换成全角逗号!使用SQL 命令!!
提供下查询语句:
SELECT * FROM inventory
WHERE cInvName COLLATE Chinese_PRC_CS_AS_WS like '%'%'
update inventory
set cInvStd=replace(cInvStd,',',',')
where charindex(',',cInvStd)>0;
这样写命令,成功了!
现在是这样的,我需要修改cInvStd字段中带英文上逗点’应该,怎么写!!
!!!!
不胜,感激!
上逗点,在SQL中如何表示!
多点回答啦!
谢谢各位的帮助!!不管怎样,度娘有自己的优点!是个好东西!!嘿嘿! 展开
提供下查询语句:
SELECT * FROM inventory
WHERE cInvName COLLATE Chinese_PRC_CS_AS_WS like '%'%'
update inventory
set cInvStd=replace(cInvStd,',',',')
where charindex(',',cInvStd)>0;
这样写命令,成功了!
现在是这样的,我需要修改cInvStd字段中带英文上逗点’应该,怎么写!!
!!!!
不胜,感激!
上逗点,在SQL中如何表示!
多点回答啦!
谢谢各位的帮助!!不管怎样,度娘有自己的优点!是个好东西!!嘿嘿! 展开
5个回答
展开全部
update inventory set clnvName=replace(clnvName,',',' ,') where clnvName like '%,%'
原理是用update来更新,匹配到带半角逗号的数据,进行replace替换修改。上述语句需要您自己调试下,应该没写错,你再检查一下
原理是用update来更新,匹配到带半角逗号的数据,进行replace替换修改。上述语句需要您自己调试下,应该没写错,你再检查一下
追问
update inventory
set cInvStd=replace(cInvStd,',',',')
where charindex(',',cInvStd)>0;
这样写命令,成功了!
现在是这样的,我需要修改cInvStd字段中带英文上逗点’应该,怎么写!!
!!!!
不胜,感激!
追答
那就是 where clnvStd like '%/''%' ESCAPE '/'
匹配这类特殊字符,需要用转义字符/
展开全部
用使用英文逗点在SQL语句中只需要在它前面再加上一个英文逗点即可。
追问
,,是这样的,你们都是认真的孩子啊!!泪奔中!!!,,,可是分只能给一个娃啊!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-10-28
展开全部
其实就是单引号(')在sql中,想要表示单引号,要用两个单引号('',注意:不是双引号")
update inventory
set cInvStd=replace(cInvStd,'''',''')
where charindex('''',cInvStd)>0
update inventory
set cInvStd=replace(cInvStd,'''',''')
where charindex('''',cInvStd)>0
追问
,,是这样的,你们都是认真的孩子啊!!泪奔中!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据库系统中,经常有些用户在输入数据的时候会不小心使用全角输入,这就有可能会导致我们的程序出错,如何解决此类问题了。
测试代码:
select cast('111' as int) as num1
select cast('111' as int) as num2
运行结果:
第一个正确显示: 111
第二个则报错: 在将 varchar 值 '111' 转换成数据类型 int 时失败。
下面使用自定义标量函数来解决这个问题:
转换原理
全角字符unicode编码从65281~65374
半角字符unicode编码从33~126
空格比较特殊,全角为 12288,半角为 32
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
like的时候,指定排序规则 COLLATE Latin1_General_BIN
是保证字符顺序按unicode编码排序
if object_id(N'dbo.u_convert',N'FN') is not null
drop function dbo.u_convert
GO
create function dbo.u_convert(
@str nvarchar(4000), --要转换的字符串
@flag bit --转换标志,0转换成半角,1转换成全角
)
returns nvarchar(4000)
AS
begin
declare
@pat nvarchar(8),
@step int,
@i int,
@spc int
if @flag=0
begin
select @pat=N'%[!-~]%',@step=-65248,
@str=replace(@str,N' ',N' ')
end
else
begin
select @pat=N'%[!-~]%',@step=65248,
@str=replace(@str,N' ',N' ')
end
set @i=patindex(@pat collate LATIN1_GENERAL_BIN,@str)
while @i>0
select @str=replace(@str,
substring(
@str,@i,1),
nchar(unicode(substring(@str,@i,1))+@step)),
@i=patindex(@pat collate LATIN1_GENERAL_BIN,@str)
return(@str)
end
GO
实例
declare @stru nvarchar(50)
set @stru= dbo.u_convert('?',1)
print @stru
测试代码:
select cast('111' as int) as num1
select cast('111' as int) as num2
运行结果:
第一个正确显示: 111
第二个则报错: 在将 varchar 值 '111' 转换成数据类型 int 时失败。
下面使用自定义标量函数来解决这个问题:
转换原理
全角字符unicode编码从65281~65374
半角字符unicode编码从33~126
空格比较特殊,全角为 12288,半角为 32
而且除空格外,全角/半角按unicode编码排序在顺序上是对应的
所以可以直接通过用+-法来处理非空格数据,对空格单独处理
like的时候,指定排序规则 COLLATE Latin1_General_BIN
是保证字符顺序按unicode编码排序
if object_id(N'dbo.u_convert',N'FN') is not null
drop function dbo.u_convert
GO
create function dbo.u_convert(
@str nvarchar(4000), --要转换的字符串
@flag bit --转换标志,0转换成半角,1转换成全角
)
returns nvarchar(4000)
AS
begin
declare
@pat nvarchar(8),
@step int,
@i int,
@spc int
if @flag=0
begin
select @pat=N'%[!-~]%',@step=-65248,
@str=replace(@str,N' ',N' ')
end
else
begin
select @pat=N'%[!-~]%',@step=65248,
@str=replace(@str,N' ',N' ')
end
set @i=patindex(@pat collate LATIN1_GENERAL_BIN,@str)
while @i>0
select @str=replace(@str,
substring(
@str,@i,1),
nchar(unicode(substring(@str,@i,1))+@step)),
@i=patindex(@pat collate LATIN1_GENERAL_BIN,@str)
return(@str)
end
GO
实例
declare @stru nvarchar(50)
set @stru= dbo.u_convert('?',1)
print @stru
参考资料: http://hi.baidu.com/xrszx/blog/item/7edbbdd3e774f73e960a165f.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你试试直接用update更新 然后 后面带着like 直接更新 你试试 看看可以不 先拿一个例子做实验 能否成功
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询