❶ 简单sql语句,如何截取指定分隔符前字符串
一、用到的函数:substring(' ', , )、charindex(' ',' ')
select SUBSTRING('[email protected]',1,charindex('@','[email protected]')-1)
1.substring(字符串表达式,开始位置,长度):
从一个指定字符串的指定位置截取制定长度的字符;
第一个参数表示被截取的字符串;
第二个参数表示要在第一个参数中开始截取的位置;
第三个参数表示要截取的长度。
例如:select substring('abc123',1,2) →返回ab
从字符串‘abc123’的第一个字符开始截取,共截取两个字符,最后得到‘ab’。
2.charindex(字符串表达式1,字符串表达式2[,整数表达式]):
在字符串2中查找字符串1,如果存在返回第一个匹配的位置,如果不存在返回0。如果字符串1和字符串2中有一个是null则返回null。
可以指定在字符串2中查找的起始位置。
例如:select charindex('ab','BCabTabD') → 返回3
select charindex('ab','BCabTabD',4) →返回6
二、用到的函数:left(' ', )、charindex(' ',' ')
select LEFT('[email protected]',charindex('@','[email protected]')-1)
1.left(字符串表达式,整数表达式):
从字符串表达式的最左边开始截取整数表达式个字符。
例如:select left('abcdef',3) →返回abc
❷ SQL语句如何在两张表中分组查询,而只取一条记录
sql语句中,关联查询只取分组的一条记录的方法如下:
select userid,ranking,username from table //查询字段有userid username
where userid+ranking in //where 条件包括userid+ranking in是集合选择关键字
(
select userid+max(ranking) from table // max(ranking)选择ranking列的最大值
group by userid //根据userid分组
)
以上sql中,内层select查出了最大的ranking,根据userid分组,外层查询中选择userid+ranking。
❸ SQL分组查询 每个分组取一个数据
表名假定为g,字段为id,group,name
我用sql server写的
语法应该是一样的
语句如下:
select * from g g1
where g1.id in
(select top 1 g2.id from g g2 where g2.[group]=g1.[group] order by g2.id)
order by g1.id
❹ sql语句,能够截取指定字段后面的一个字符串吗
可以的,需要用到charindex函数和substring函数。
CHARINDEX函数常常用来在一段字符中搜索字符或者字符串。
substring
public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。
(4)sql语句根据分组截取扩展阅读:
javascript示例
1 <scripttype="text/javascript">
2 varstr="Helloworld!"
3 document.write(str.substring(1,3));4 </script>上面返回字符串:"el";
str.substring(1,2) //返回e
str.substring(1) //返回"elloworld";
还有此函数中会出现奇怪的现象,当出现str.substring(5,0);
这又是怎么回事,不过返回的是"Hello",
str.substring(5,1) //返回"ello",截去了第一位,返回余下的.
可见substring(start,end),可以有不同的说明,即start可以是要返回的长度,end是所要去掉的多少个字符(从首位开始).
在JS中,substr(start,length),用得较方便.
CustomName包含客户的First Name和Last Name,它们之间被一个空格隔开。我们用CHARINDX函数确定两个名字中间空格的位置。通过这个方法,我们可以分析ContactName列的空格位置,这样可以只显示这个列的last name部分。
select top 5 substring(ContactName,charindex(' ',ContactName)+1,len(ContactName)) as [Last Name] from customers
CHARINDEX函数找到First Name和Last Name之间的空格,所以SUBSTRING函数可以分开ContactName列,这样就只有Last Name被选出。在CHARINDEX函数返回的整数上加1,这样Last Name不是从空格开始。
❺ sql:用group by分组后,每组随意取一个记录
select 楼栋id,楼栋名称,管理人员联系方式,层高,面积
from (
select 楼栋id,楼栋名称,管理人员联系方式,row_number() over(partition by 楼栋id order by 层高 desc) rn,层高,SUM(建筑面积) OVER(PARTITION BY 楼栋id) as 面积
from dbo.进阶视图_楼栋对用房单位
) a
where rn=1;
❻ sql语句按照日期分组怎么写
1.如果你的时间格式是2012-01-13
17:35:52.217这样的形式,(主要是那个01不要是1),用下面这个
SELECT
convert(varchar(10),时间,23),SUM(
数字数据
)
FROM
表
group
by
convert(varchar(10),时间,23)
2.如果你的时间格式不是上面的格式,先转化成datetime:
SELECT
convert(varchar(10),cast(时间
as
datetime),23)
,SUM(数字数据)
FROM
表
group
by
convert(varchar(10),cast(时间
as
datetime),23)
3.如果报错,请追问~
❼ SQL中求截取字符串语句
可以通过substring方法实现。
sql: select substring('123456789',5,2) from al;
解释:第一个参数表示要截取的字符串,第二个参数是起始位置,第三个参数是,截取的长度。
执行结果:56。
❽ sql数据库怎么实现分组并取每组的前1条语句,按日期排序
select * from
(
select row_number() over(partition by '分组' order by '日期') as rownum -- 排序并分组
, * -- 所需显示的字段
from 表
) as T
where T.rownum = 1
对每组的数据按日期排序并加上行号
取出时只取行号为1,也就是第一条数据。