1、既然被for xml path('')组合到一起了,那就想办法把这个字符串拆开;
2、可以创建一个Split这样的函数,来拆开这一列为一个表的形式;
3、然后,再查出这个表里的最大值即可
下面是Ufn_Split函数
create function [dbo][Ufn_Split](@Array varchar(max),@StrSeprate varchar(10))returns @TokenVals table (fjj_id INT IDENTITY(1,1) ,strValue varchar(255))
as
begin
declare @strlen int, @curpos int, @val varchar(255), @nextcomma int
set @strlen = datalength(@Array)
set @curpos = 0
while @curpos <= @strlen
begin
set @nextcomma = charindex(@StrSeprate, @Array, @curpos)
if @nextcomma = 0
set @nextcomma = @strlen + 1
set @val = substring(@Array,@curpos,@nextcomma - @curpos)
insert @TokenVals values (rtrim(ltrim(@val)))
set @curpos = @nextcomma + 1
end
return
end
函数使用方法:
select from dboUfn_Split('1+2+3+5+1','+') table1假设你表中的DATA_TIME字段是日期类型,如果是字符类型,需要对下列语句做修改
SQL SERVER
SELECT CONVERT(CHAR(8),DATA_TIME,112) 日期,MAX(DATA_DATA)
FROM TABLE_NAME
GROUP BY CONVERT(CHAR(8),DATA_TIME,112)
ORDER BY 1
ORACLE
SELECT TRUNC(DATA_TIME) 日期,MAX(DATA_DATA)
FROM TABLE_NAME
GROUP BY TRUNC(DATA_TIME)
ORDER BY 1
;
按照你的要求的话是不是要保留每条记录,然后每条记录再显示出当日的最大值?
如果是这样,SQL SERVER中需要原表和每日的最大值的嵌套表做关联;ORACLE用分析函数,下面是ORACLE的语句
SELECT TO_CHAR(DATA_TIME,'YYYY-MM-DD HH24:MI:SS') 时间,
DATA_DATA "当前值",
MAX(DATA_DATA) OVER(PARTITION BY TRUNC(DATA_TIME))"当日最大值"
FROM TABLE_NAME
ORDER BY 1;
字符的最大值:
字符型数据的比较是按首字符进行比较的z>a>9>0>空格>''>null,首位同再往下依次比较。
数值的最大值就没什么可说的了,略。
所以如题,就需要将字符先转换为数值型,再比较,才能得到你要的结果,不然的话,会出现9>10的情况,因为是按照字符来进行比较的。
如果皆为整数:
select max(cast(字段 as int)) from 表
数字较大的就用bigint
如果带小数的就看最长的小数位有多少,比如4,则:
select max(cast(字段 as decimal(20,4))) from 表
一、字符串为数值,可以直接使用 cast 把列转换成数值型,然后用max()取最大即可:
如:select max(cast(字段 as integer))
二、字符中间包含数字,如 137465、5453728,最大为7,8,可以使用CHARINDEX ( )函数来判断
如:
三、指定位置的数字,如 abc02,a2u07,最大数字为07或7,可以使用right或left截取数字,再使用max()
如:select max(right(字段,2))
当然还有其他方式的数字比较,基本思路相同,先定位数字的位置,或截取数字,在进行比较。
select max(t) as 温度最大值,min(t) as 温度最小值,max(p) as 湿度最大值,min(p) as 湿度最小值,max(datetime) as 最后出现时间,min(datetime) as 最早出现时间 from yourtable_name
你连接的是SQL还是Oracle数据库?
你对数据库 *** 作这块不是很熟悉,我建议你去网上搜搜,自己学一下,一会就能学会。
给你一个例子,
首先要添加一个引用
using
SystemDataSqlClient;(SQL数据库)
using
systemdataoracleClient;(Oracle数据库)
然后可以 *** 作了
一个SQL数据库的小例子
DataSet
ds
=
new
DataSet();
string
mSql="SELECT
MAX(QuestionID)
FROM
table_name";//引用1楼的代码
string
ConStr
=
"server=;database=你要连接的数据库;user
id=数据库用户名;password=密码";
SqlConnection
conn
=
new
SqlConnection(ConStr);
connOpen();
try
{
SqlDataAdapter
adapter
=
new
SqlDataAdapter(mSql,
conn);
//数据填写在ds中
adapterFill(ds,
"table_name");
}
catch
{
}
finally
{
//勿忘关闭库连接
connClose();
}
以上就是关于SQL怎么提取字段中最大值全部的内容,包括:SQL怎么提取字段中最大值、sql语句查询每日数据中的最大值、怎样用SQL语句查找出字符型字段内的最大值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)