❶ 簡單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,也就是第一條數據。