日期:2014-05-19  浏览次数:20513 次

如何将 '66外面'这样的字符串转成 int型66,请大家指教。
如何将   '66外面 '这样的字符串转成   int型66,请大家指教。即忽略后面的中文字符。

------解决方案--------------------
select cast(stuff( '66外面 ',3,2, ' ') as int)
------解决方案--------------------
DECLARE
@s varchar(100)
SET @s = '6633外面 '

SELECT CONVERT(int, SUBSTRING(@s, 1, PATINDEX(N '%[^0-9]% ', @s) - 1))
------解决方案--------------------
DECLARE @str varchar(10)
SET @str = '66外 '
--提到第一个不是数字的起始位置
select PATINDEX(N '%[^0-9]% ', @str)
--取得数字的字符串
select SUBSTRING(@str, 1, PATINDEX(N '%[^0-9]% ', @str) - 1)
--进行类型转换,此时没有非数字符了,可以正常转换了
SELECT CONVERT(int, SUBSTRING(@str, 1, PATINDEX(N '%[^0-9]% ', @str) - 1))
------解决方案--------------------
set @a= '666aaaa444gggg6666 '

while patindex( '%[^0-9]% ',@a)> 0
begin
set @a=stuff(@a,patindex( '%[^0-9]% ',@a),1, ' ')
end

print @a