sql server语句

查询字段长度

SELECT LEN(字段名) AS 字段长度 FROM 表名;

判断语句 EXISTS

假设我们有两个表:Orders 和 Customers。

Customers 表:

CustomerIDCustomerName
1John Doe
2Jane Smith
3Bob Johnson

Orders 表:

OrderIDCustomerIDOrderDate
10112022-01-01
10222022-02-01
10332022-03-01

如果我们想要查询所有有订单的客户,我们可以使用 EXISTS 语句如下:

SELECT CustomerName
FROM Customers c
WHERE EXISTS (
    SELECT 1
    FROM Orders o
    WHERE c.CustomerID = o.CustomerID
);

在这个查询中,子查询对于 Customers 表中的每一行都会执行一次。如果子查询至少返回一行(即存在与 Customers 表中的当前行 CustomerID 相匹配的 Orders 表中的行),则 EXISTS 条件为 TRUE,并且 Customers 表中的当前行会被包含在结果集中。

结果是:

CustomerName
JohnDoe
JaneSmith
BobJohnson

因为所有客户在 Orders 表中都有对应的订单,所以所有客户都被查询出来。

注意,使用 EXISTS 时,子查询中的 SELECT 子句通常是一个常量(如 SELECT 1),因为我们只关心子查询是否返回结果,而不关心返回的具体内容。

EXISTS 与 IN 运算符在某些情况下可以互换使用,但它们在性能上可能有所不同,特别是在处理大型数据集时。EXISTS 通常比 IN 更快,因为它一旦找到匹配的行就会停止搜索,而 IN 则需要处理完整个子查询的结果集。

时间格式CONVERT语句

将日期时间转换为字符串格式

SELECT CONVERT(VARCHAR, GETDATE(), 120) AS FormattedDate;

在这个例子中,GETDATE() 函数获取当前日期和时间,CONVERT 函数将其转换为 VARCHAR 类型,并使用 120 样式代码(yyyy-mm-dd hh:mi:ss)来格式化输出。

将字符串转换为日期时间格式

SELECT CONVERT(DATETIME, '2023-10-23 12:34:56') AS ConvertedDate;

这里,CONVERT 函数将字符串 ‘2023-10-23 12:34:56’ 转换为 DATETIME 类型。

将日期时间转换为特定的日期格式

SELECT CONVERT(VARCHAR, GETDATE(), 101) AS FormattedDate;

使用样式代码 101(mm/dd/yyyy),CONVERT 函数将日期时间转换为指定的日期格式。

将日期时间转换为特定的时间格式

SELECT CONVERT(VARCHAR, GETDATE(), 108) AS FormattedTime;

使用样式代码 108(hh:mi:ss),CONVERT 函数将日期时间转换为指定的时间格式。

注意事项

1、CONVERT 函数在转换数据时可能会引发错误,如果输入数据的格式与指定的样式不匹配。
2、SQL Server 支持多种日期和时间格式,可以根据需要选择合适的样式代码。
3、在处理日期和时间时,还可以使用其他函数,如 CAST、FORMAT 等。

使用 CAST 函数进行时间格式转换

SELECT CAST(GETDATE() AS VARCHAR(20)) AS FormattedDateTime;

在这个例子中,CAST 函数将当前日期和时间转换为 VARCHAR 类型,默认使用 120 样式代码(yyyy-mm-dd hh:mi:ss)进行格式化。

请根据您的具体需求和数据库环境选择合适的函数和样式代码。

样式码

在 SQL Server 中,CONVERT 函数用于将一种数据类型转换为另一种数据类型。当转换日期和时间数据类型时,CONVERT 函数使用特定的样式码来确定输出的格式。以下是一些常用的日期和时间样式码:

日期样式码

样式码描述
101MM/DD/YYYY
102YYYY.MM.DD
103DD/MM/YYYY
104DD.MM.YYYY
105DD-MM-YYYY
110MM-DD-YYYY
111YYYY/MM/DD
120YYYY-MM-DD hh:mi:ss (ODBC canonical)
121YYYY-MM-DD hh:mi:ss.mmm (ODBC canonical with milliseconds)
126ISO8601 format: YYYY-MM-DDTHH:MI:SS
127ODBC date format
130DD MMM YYYY HH:MI:SS:mmm (24h)
131DD/MM/YYYY HH:MI:SS:mmm (24h)

时间样式码

样式码描述
108hh:mi:ss
109hh:mi:ss:mmm (3 digit milliseconds)
112YYYYMMDD hh:mi:ss (no separators)
113DD/MM/YYYY hh:mi:ss:mmm (24h)
120YYYY-MM-DD hh:mi:ss (ODBC canonical)
121YYYY-MM-DD hh:mi:ss.mmm (ODBC canonical with milliseconds)
127ODBC time format
130DD MMM YYYY HH:MI:SS:mmm (24h)
131DD/MM/YYYY HH:MI:SS:mmm (24h)

日期和时间样式码

样式码描述
20YYYY-MM-DD
21YYYY-MM-DD hh:mi:ss
22YYYY-MM-DD hh:mi:ss.mmm (up to 3 decimal places)
23YYYY-MM-DD hh:mi:ss:mmm (up to 3 decimal places)
24YYYY-MM-DD hh:mi:ss.mmmmm (up to 7 decimal places)
25YYYY-MM-DD hh:mi:ss:mmmmm (up to 7 decimal places)
120YYYY-MM-DD hh:mi:ss (ODBC canonical)
121YYYY-MM-DD hh:mi:ss.mmm (ODBC canonical with milliseconds)
126ISO8601 format: YYYY-MM-DDTHH:MI:SS
127ODBC date and time format
130DD MMM YYYY HH:MI:SS:mmm (24h)
131DD/MM/YYYY HH:MI:SS:mmm (24h)

使用 CONVERT 函数时,样式码是可选的,但如果你希望以特定的格式输出日期或时间,那么提供正确的样式码会非常有用。例如,如果你想要以 YYYY-MM-DD 的格式输出日期,你可以使用样式码 20 或 120。

请注意,这些样式码可能随着 SQL Server 版本的更新而发生变化,因此建议查阅最新的 SQL Server 文档以获取最准确的信息。

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值