sql 类型转换的问题

fancycgx3650 2018-12-20 11:27:33
表中有一列,有中文,有2.0这样的float,有1这样的int
怎么写一个查询语句,让中文还是中文,float和int都显示int
...全文
242 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2018-12-20
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t (
	n NVARCHAR(20)	
)
INSERT INTO t VALUES ('中文')
INSERT INTO t VALUES ('2.0')
INSERT INTO t VALUES ('1')

SELECT ltrim(CONVERT(INT,CONVERT(float,n))) AS n 
FROM t WHERE TRY_CONVERT(float,n) IS NOT NULL
UNION ALL
SELECT n 
FROM t WHERE TRY_CONVERT(float,n) IS NULL

/*
n
--------------------
2
1
中文
*/

fancycgx3650 2018-12-20
  • 打赏
  • 举报
回复
引用 3 楼 吉普赛的歌 的回复:
你的 sqlserver 的版本是多少?
2012 11.0.7001
吉普赛的歌 版主 2018-12-20
  • 打赏
  • 举报
回复
你的 sqlserver 的版本是多少?
fancycgx3650 2018-12-20
  • 打赏
  • 举报
回复
引用 1 楼 二月十六 的回复:
额,这个怎么界定呢? 比如float是2.0 int 是1 最后有一个串是 啊2.01cb 这个怎么算呢?
判断nvarchar就是nvarchar, int就是int, 只把float转换成int
二月十六 版主 2018-12-20
  • 打赏
  • 举报
回复
额,这个怎么界定呢? 比如float是2.0 int 是1 最后有一个串是 啊2.01cb 这个怎么算呢?
Dear SQL(燊) 2018-12-20
  • 打赏
  • 举报
回复
IF OBJECT_ID('#t') IS NOT NULL DROP TABLE #t
GO
CREATE TABLE #t (
    n NVARCHAR(20)   
)
INSERT INTO #t VALUES ('中文')
INSERT INTO #t VALUES ('2.0')
INSERT INTO #t VALUES ('1')
INSERT INTO #t VALUES ('1.9')

select case when ISNUMERIC(n)=0 then n
			else cast(cast(cast(n as float) as int) as nvarchar(50))
	   end
from #t

--------------------------------------------------
中文
2
1
1


二月十六 版主 2018-12-20
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([col] nvarchar(23))
Insert #T
select N'啊' union all
select N'2.0' union all
select N'1'
Go
--测试数据结束
SELECT CASE
           WHEN ISNUMERIC(#T.col) <> 0 AND CHARINDEX('.',col)>0 THEN
              SUBSTRING(col,0,CHARINDEX('.',col))
           ELSE
               col
       END col
FROM #T;
  

34,838

社区成员

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

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