菜鸟笔记——8月16日

sql server中,N''表示什么意思

Unicode 字符串的格式与普通字符串相似,但它前面有一个 N 标识符(N 代表 SQL-92 标准中的国际语言 (National Language))。N 前缀必须是大写字母。例如,'Michél' 是字符串常量而 N'Michél' 则是 Unicode 常量。Unicode 常量被解释为 Unicode 数据,并且不使用代码页进行计算。Unicode 常量确实有排序规则,主要用于控制比较和区分大小写。为 Unicode 常量指派当前数据库的默认排序规则,除非使用 COLLATE 子句为其指定了排序规则。Unicode 数据中的每个字符都使用两个字节进行存储,而字符数据中的每个字符则都使用一个字节进行存储。有关更多信息,请参见使用 Unicode 数据。Unicode 字符串常量支持增强的排序规则。如果不使用 N 前缀,字符串将转换为数据库的默认代码页。这可能导致不识别某些字符。

@@TRANCOUNT 是一个全局变量,包含当前的用户连接的当前活动事务数。此全局变量可用于在一个 BEGIN 事务...COMMIT 事务组的中间确定当 (和如果) 时的事务已回滚。

@@TRANCOUNT 变量就会增加每次启动新事务时使用一个 BEGIN 事务命令。当在执行 COMMIT 事务命令或已回滚该事务时,它会递减。可以通过使用 SELECT @@TRANCOUNT 命令访问此全局变量。
在存储过程中这样用过:

alter proc xxp_delete

@actype int,

@id bigint

as begin

if @@trancount>0

 rollback tran

else begin tran tr

declare @ return_value int  declare @tmpid bigint

...

关于CHarindex用法:

相关资料:http://www.jcwcn.com/article-28724-1.html

  CHARINDEX(’7.0’, ’Microsoft SQL Server 2000’)

 CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如CHARINDEX没有找到要找的字符串,那么函数整数“0”。
 关于patindex的用法

PATINDEX('%pattern%',expression), 返回指定表达式中第一次出现的起始位置;如果不存在,则返回零。
相关资料:http://www.cnblogs.com/moss_tan_jun/archive/2011/11/26/2263982.html
 
sql 中的stuff函数

STUFF

删除指定长度的字符并在指定的起始点插入另一组字符。

语法

STUFF ( character_expression , start ,length,character_expression)

参数

character_expression

由字符数据组成的表达式。character_expression 可以是常量、变量,也可以是字符或二进制数据的列。

start

是一个整形值,指定删除和插入的开始位置。如果 startlength 是负数,则返回空字符串。如果start 比第一个character_expression长,则返回空字符串。

length

是一个整数,指定要删除的字符数。如果 length 比第一个 character_expression长,则最多删除到最后一个character_expression 中的最后一个字符。

返回类型

如果 character_expression 是一个支持的字符数据类型,则返回字符数据。如果 character_expression是一个支持的 binary 数据类型,则返回二进制数据。

注释

可以嵌套字符串函数。

示例

下例通过在第一个字符串 (abcdef) 中删除从第二个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,创建并返回一个字符串。

SELECT STUFF('abcdef', 2, 3, 'ijklmn')
GO

下面是结果集:

---------
aijklmnef
(1 row(s) affected)

 

关于存储过程中output的用法

一个存储过程除了返回结果集外,
如果想返回额外的值,即可使用output类型的参数。
在前台代码里定义returntype为output的参数,就可以接收这些返回值。

一个存储过程可以有多个output参数。

 

关于 datediff函数的应用

查找今天注册的公司: select * from company   where   datediff(day,getdate(),adddate)=0

查找最近三天注册的公司:Select * From company Where DateDiff([day],adddate,getdate()) <=2

查找最近三天注册的公司:Select * From company Where DateDiff([day],adddate,getdate()) <=6

查找本月注册的公司:select   CompanyName,adddate,AreaP,vip,CompanyID from company   where   datediff(month,getdate(),adddate)=0

注:关于DateDiff函数

DateDiff: SQL server函数

  返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。

  语法

  DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

  DateDiff 函数语法中有下列命名参数:

  部分 描述

  interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔

  Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。

  Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。

  firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。

  设置

  interval 参数的设定值如下:

  设置 描述

  yyyy 年

  q 季

  m 月

  y 一年的日数

  d 日

  w 一周的日数

  ww 周

  hh 时

  n 分钟

  s 秒

  firstdayofweek 参数的设定值如下:

  常数 值 描述

  vbUseSystem 0 使用 NLS API 设置。

  vbSunday 1 星期日(缺省值)

  vbMonday 2 星期一

  vbTuesday 3 星期二

  vbWednesday 4 星期三

  vbThursday 5 星期四

  vbFriday 6 星期五

  vbSaturday 7 星期六

  常数 值 描述

  vbUseSystem 0 用 NLS API 设置。

  vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。

  vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。

  vbFirstFullWeek 3 从第一个无跨年度的星期开始。

  说明

  DateDiff 函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。

  为了计算 date1 与 date2 相差的日数,可以使用“一年的日数”(y) 或“日”(d)。当 interval 是“一周的日数”(w) 时,DateDiff 返回两日期间的周数。如果 date1 是星期一,DateDiff 计算到 date2 为止的星期一的个数。这个数包含 date2 但不包含 date1。不过,如果 interval 是“周”(ww),则 DateDiff 函数返回两日期间的“日历周”数。由计算 date1 与 date2 之间星期日的个数而得。如果 date2 刚好是星期日,则 date2 也会被加进 DateDiff 的计数结果中;但不论 date1 是否为星期日,都不将它算进去。

  如果 date1 比 date2 来得晚,则 DateDiff 函数的返回值为负数。

  firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。

  如果 date1 或 date2 是日期文字,则指定的年份成为该日期的固定部分。但是,如果 date1 或 date2 用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式 date1 或 date2 时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。

  在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DateDiff 返回 1 表示相差一个年份,虽然实际上只相差一天而已。

  示例

  此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。

  USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) AS no_of_daysFROM titlesGO

  DATEDIFF函数在Access和MSSQL中的使用区别

  ACCESS中用法:DATEDIFF('day', pubdate, Now())

  MSSQL中用法:DATEDIFF(day, pubdate, getdate())

 
 

         SQL中over 关键字(转载) 

     1.over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。其参数:over(partition by columnname1 order by columnname2)含义:按    columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。例如:employees表中,有两个部门的记录:department_id =10和20 select department_id,rank() over(partition by department_id order by salary) from employees就是指在部门10中进行薪水的排名,在部门20中进行薪水排名。如果是partition by org_id,则是在整个公司内进行排名

2.不是over,是Rank() over ,具体语法形如: RANK ( ) OVER ( [query_partition_clause] order_by_clause ) DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause ) 可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序, 其中PARTITION BY 为分组字段,ORDER BY 指定排序字段

SQL Server DATEADD() 函数

DATEADD() 函数在日期中添加或减去指定的时间间隔。

语法

 DATEADD(datepart,number,date)

date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

datepart 参数可以是下列的值:

datepart缩写
yy, yyyy
季度qq, q
mm, m
年中的日dy, y
dd, d
wk, ww
星期dw, w
小时hh
分钟mi, n
ss, s
毫秒ms
微妙mcs
纳秒ns

实例

假设我们有下面这个 "Orders" 表:

OrderIdProductNameOrderDate
1'Computer'2008-12-29 16:25:46.635

现在,我们希望向 "OrderDate" 添加 2 天,这样就可以找到付款日期。

我们使用如下 SELECT 语句:

SELECT OrderId,DATEADD(day,2,OrderDate) AS OrderPayDate
FROM Orders

结果:

OrderIdOrderPayDate
12008-12-31 16:25:46.635

  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值