数据库总结
- LEN是把字符串前导尾随空格把它们包含计算内,去掉空格的就是.
- LTRIM 是删除字符串前面的空格 而RTRIM是删除字符串后面的空格。
LTRIM 不删除空格字符,如制表符或换行符。Unicode 为许多不同类型的空格提供码位,但是该函数仅识别 Unicode 码位 0x0020。双字节字符集 (DBCS) 字符串转换为 Unicode 时,它们可能包含 0x0020 之外的空格字符,而该函数无法删除此类空格。若要删除所有类型的空格,可以在从脚本组件运行的脚本中使用 Microsoft Visual Basic .NET LTrim 方法。
- 数据库varchar(2)或varchar(4)定义字符串是尽量定义2的n次幂;
- Union all 使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。
- 在建立新项目时,建议留有几个备用字段,(在项目期间,看到的现象就是加字段,这样改动太麻烦,留有备用字段可到以后扩展是使用,varchar他是会自动伸缩的,不影响性能的。)
- 说明:四表联查问题:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... - select top 10 * from tb_Special order by newid()出现随机十条数据
- 说明:外连接查询(表名1:a 表名2:b)
1 select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 2 left Outer join on =left join on 3 4 牛人的数据集连接 5 select cand2.*,d.tid,ISNULL(d.tid,0) as IsCheck,ISNULL(d.Title,'无主题')as title from 6 7 (select cand.id,title.id as tid,title.Title from tb_v_candidate cand 8 9 left join tb_v_voteitem item on cand.id = item.cid 10 11 left join tb_v_votetitle title on item.tpid = title.id 12 13 where item.tpid = '') d right join tb_v_candidate cand2 on d.id = cand2.id
- 对指定的集求值,删除该集中的重复元组,然后返回结果集(查询出来是条天只有一列有区别,但不能作为条件的前提下这样用 结果是显示一条)黄色字段两处必须保持一致才可用。
1 例如:select b.[BreakNo],b.[WaterNo]b.[MarketID],b.[MarketName] b.[ContractNo],,b.[RequestNo] ,b.[RequestAlias] , 2 3 ,m.[ContractNo] ,m.[SMemberID] ,m.[SMemberName] ,m.[BMemberID] 4 5 ,m.[BMemberName] ,m.[Status] ,m.[StatusName] ,m.[Memo] ,m.[TradeType] 6 7 from tb_Delivery_Break b inner join 8 9 (SELECTdistinct [ContractNo],[SMemberID],[SMemberName], 10 11 [BMemberID],[BMemberName],[Status],[StatusName],[Memo],[TradeType] 12 13 FROM[HLERP_Market].[dbo].[tb_Delivery])as m On 14 15 b.ContractNo=m.ContractNo where b.MarketID='003'
8.游标总结
1 FETCH :返回针对连接当前打开的任何游标发出的上一条游标FETCH语句的状态 2 3 OPEN:打开Transtact-sql 服务器游标,然后通过执行在DECLARE CURSOR或 SET 4 5 CURSOR_VARIABLE 语句中制定的Transtact—SQL语句填充游标 6 7 8 9 DECLARE AddSpecial CURSOR FOR --AddSpecial创建游标的名字 10 11 SELECT a FROM f_split(@SpecialNo,',')--把获取游标集合截取出来 12 13 OPEN AddSpecial 14 15 ETCH NEXT FROM AddSpecial INTO @special --分开插入 16 17 WHILE(@@FETCH_STATUS=0) --循环游标 18 19 BEGIN 20 21 IF @special<>''” 22 23 BEGIN 24 25 Sql语句处理 26 27 END 28 29 END 30 31 FETCH NEXT FROM AddSpecial INTO @special //FETCH返回针对连接当前打开的任何游标发出的上一条游标 FETCH 语句的状态。 32 33 END 34 35 CLOSE AddSpecial --关闭游标 36 37 DEALLOCATE AddSpecial --释放游标
9.DECLARE @SummaryID varchar(128) --摘要ID
1 if(CHARiNDEX(',',@MarketID)>0)--查找MarketId字符串是否”,“ 2 3 begin 4 5 select top(1) @SummaryID=a from f_split(@MarketID,',') 6 7 where a not in (select top(1) a from f_split(@MarketID,','))-- 取逗号后面的 8 9 select top(1) @MarketID=a from f_split(@MarketID,',')-- 取逗号前面的,
为什么把逗号前 的放到最后就是因为存放字符串是放到了MarkeID里面放到前面的话逗号就不存在了,就截取不到了
SQL Server基本函数
1.字符串函数 长度与分析用
1,datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格
2,substring(expression,start,length) 取子串,字符串的下标是从“1”,start为起始位置,length为字符串长度,实际应用中以len(expression)取得其长度
3,right(char_expr,int_expr) 返回字符串右边第int_expr个字符,还用left于之相反
4,isnull( check_expression , replacement_value )如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作类
5,Sp_addtype 自定义数据类型
例如:EXEC sp_addtype birthday, datetime, 'NULL'
6,set nocount {on|off}
使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。
SET NOCOUNT 为 OFF 时,返回计数