SQL語句怎樣進行行列轉換以及字符串求和
create table tempAB(A varchar (10),B varchar (10)) insert into tempAB values('a1','b1') insert into tempAB values('a2','b1') insert into tempAB values('a3','b1') insert into tempAB values('a4','b2') insert into tempAB values('a5','b2') insert into tempAB values('a6','b2') //新建一個表,以下代碼可以返回B的值為b2,考試,大提示所有對應的A的值相加起來的結果 首先就是把A列中符合條件的行轉換為列,col+A的值為列名, 再把各列相加 declare @sql varchar(4000) set @sql = 'select ''''' select @sql=@sql+'+table'+A+'。
'+'col'+A from (select distinct A from tempAB where B='b2') as e select @sql=@sql+' from ' select @sql=@sql+'(select a。 '+'col'+A+' from(select (case A when '''+A+''' then A end) '+'col'+A+' '+ 'from tempAB) a inner join (select (case A when '''+A+''' then A end) '+'col'+A+' '+ 'from tempAB) b on a。
col'+A+'=b。 col'+A+') '+'table'+A+',' from (select distinct A from tempAB where B='b2') as f select @sql=substring(@sql,0,len(@sql)) print @sql exec(@sql)。
sql語句中查找某字段中含有某字符串的語句怎么寫
select filename from oa_file where filename not like '%[!-¥]%'
或者這個:
select filename from oa_file where filename not like '%[!-?]%'
出現的問題就是問號和問好也是不一樣的,比如說英文標點半角的問號是“?”,英文標點全角的問號是“?”但是中文半角問號是“?”中文全角的問號是“?”
這些都是不一樣的,你搜出來的都是帶有英文半角問號的文件。
擴展資料:
SQL中的字段“包含”與“包含于”字符串的寫法
1、查詢表中某字段值“包含”某字符串的所有記錄的方法
假如表中有一個name字段,查詢name包含“張三”的所有記錄,可以這樣寫sql:
Stirng strsql="SELECT * FROM 表名 WHERE name LIKE '%"+"張三"+"%'";
2、查詢某字段值“包含于”某個字符串的所有記錄的方法
如果查詢表中name字段包含于字符串“張三是個好學生”的所有記錄,可以這樣寫sql:
String strsql="SELECT * FROM 表名 WHERE INSTR('張三是個好學生',name)>0";
即可查詢,記錄中的name字段值中包括:張、三、是、個、好、學、生、張三、。。等所有記錄。
注:以上sql字符串中請將全角符號改為半角符號。
SQL語句中如何將字符串轉成臨時表
方式一:通過charindex和substring。
create function func_splitstring (@str nvarchar(max),@split varchar (10)) returns @t Table (c1 varchar(100)) as begin declare @i int declare @s int set @i=1 set @s=1 while(@i>0) begin set @i=charindex(@split,@str,@s) if(@i>0) begin insert @t(c1) values(substring(@str,@s,@i-@s)) end else begin insert @t(c1) values(substring(@str,@s,len(@str)-@s+1)) end set @s = @i + 1 end return end 執行:select * from dbo。 func_splitstring('1,2,3,4,5,6', ',') 結果: 方式二:通過XQuery(需要SQL Server 2005以上版本)。
create function func_splitid (@str varchar(max),@split varchar (10)) RETURNS @t Table (c1 int) AS BEGIN DECLARE @x XML SET @x = CONVERT(XML,'') INSERT INTO @t SELECT x。 item。
value('@id[1]', 'INT') FROM @x。nodes('//items/item') AS x(item) RETURN END 執行:select * from dbo。
func_splitid('1,2,3,4,5,6', ',')。
編寫T-SQL語句,定義規則Email-rule,限制字符串中必
ifobject_id('fCheckEmail')isnotnulldropfunctionfCheckEmailGO----創建驗證函數,返回值為1表示正確,否則格式錯誤createfunctionfCheckEmail(@Emailvarchar(1000)) ('')>0or/*含有空格*/len(@email)-len(replace(@email,'。
',''))>1or/*'。'超過1個*/len(@email)-len(replace(@email,'@',''))>1or/*'@'超過1個*/right(@email,1)='。
'or/*以'。'結尾*/right(@email,1)='@'or/*以'@'結尾*/left(@email,1)='。
'or/*以'。'開頭*/left(@email,1)='@'or/*以'。
'開頭*/charindex('。')-charindex('@') '相鄰*/charindex('。
')-charindex('@')=1/*'@'與'。'相鄰*/ /*僅供參考,可以靈活添加\刪除或修改某些條件*/。
sql語句 怎么在一個字符串中間加幾個字符
直接用估計沒有,可以定義一個函數轉一下,MSSQL中有個stuff函數
在指定位置替換或增加字符,比如:
SELECT STUFF('12345678', 2, 3, 'abc')
SELECT STUFF('12345678', 2, 0, ':')
但只能插入一個位置。
建議自定義一個字符串處理函數,然后在語句中調用吧
比如
create function *_setColon (
@oldstr varchar(4000) )
returns varchar(4000)
as
begin
declare @outstr varchar(4000)
set @outstr=''
while (len(@oldstr)>2)
begin
set @outstr=@outstr+left(@oldstr,2)+':'
set @oldstr=right(@oldstr, len(@oldstr)-2)
end
if @oldstr''
begin
set @outstr=@outstr+@oldstr
end
return @outstr
end
select *_getColon('123456789')
第二種情況可以先把字符串中的字母替換掉,然后再調用該函數,建議還是通過前端程序來處理字符串。
在sql語句中怎么判斷一個字段是否包含在另一個字符串中
sql語句判斷一個字段是否包含在另一個字符串中的方法 一、語句中使用到的函數有 1、CHARINDEX:函數返回字符或者字符串在另一個字符串中的起始位置。
語法:CHARINDEX ( expression1 , expression2 [ , start_location ] ) expression1是要到expression2中尋找的字符中,start_location是CHARINDEX函數開始在expression2中找expression1的位置。 CHARINDEX函數返回一個整數,返回的整數是要找的字符串在被找的字符串中的位置。
假如CHARINDEX沒有找到要找的字符串,那么返回0 2、rtrim:函數去除字符串右邊的空格符。 二、例子中的表格為:tt,結構數據如下 下面語句檢索test_column字段的值包含在字符串 'aabb'中的記錄 select * from tt where CHARINDEX(rtrim(test_column),'aabb') > 0 ;1、rtrim(test_column),部分數據庫,在對字符型字段的值做操作的時候,會在字符串的右邊補足空格符。
例如:字段類型為char(8),字段的值為'aa',那么會使用'aa '來操作,這樣會影響語句的結果。所以使用rtrim函數去除字符串右邊的空格符。
2、CHARINDEX(rtrim(test_column),'aabb'),在字符串'aabb'中查找是否包含rtrim(test_column)返回的字符串,找到返回字符串起始位置,反之返回0.所以包含則返回大于0的值。 3、語句執行結果: 。