当前位置: 代码迷 >> Sql Server >> 如其查询出数字序号,解决加至60分
  详细解决方案

如其查询出数字序号,解决加至60分

热度:17   发布时间:2016-04-24 09:31:20.0
如果查询出数字序号,解决加至60分。
本帖最后由 xiao1682 于 2014-12-17 14:40:49 编辑
SELECT 字段1  FROM 表 where 字段1  like '%⒍'
可以查询到一个结果为“199⒍” 实际上有上万条“6结尾”的结果

SELECT 字段1  FROM 表 where 字段1 not  like '%[0-9]' 
查不到任何结果

用更新语句将此字段转换为int时出错,提示为:
消息 245,级别 16,状态 1,第 6 行
在将 nvarchar 值 '199⒍' 转换成数据类型 int 时失败。

如果程序认为⒍就是6,那转换为int时也不应提示出错,查询⒍结尾会出来上万条包含6结尾结果,否则,字段1 not  like '%[0-9]' 时,能查询出199⒍这个值,但现在却非如此,请大大们指教,如何才能将此类数字序号转换为数字,注意⒍非6. 前者是一个字符,后者是占二个字符。

能解决才加够60分,谢谢。
------解决思路----------------------
自己写个function,在里面自己截字符判断后,转换好返回,然后外面再用强转int
------解决思路----------------------
SELECT 字段1 FROM 表 where 字段1 like '%[^0-9]%' 
SELECT 字段1 FROM 表 where ISNUMERIC(字段1) = 0

用上面之一查找非数字,然后按#1的方式把字符替换掉。
  相关解决方案