SQL Server - Where 条件用法

标签 sql sql-server tsql

我想在下面的选择 sql 代码中添加条件。

select rtrim(ltrim(SUBSTRING(line,1,CHARINDEX('|',line) -1))) as drivename
      ,round(cast(rtrim(ltrim(SUBSTRING(line,CHARINDEX('|',line)+1,
      (CHARINDEX('%',line) -1)-CHARINDEX('|',line)) )) as Float)/1024,0) as 'capacity(GB)'
      ,round(cast(rtrim(ltrim(SUBSTRING(line,CHARINDEX('%',line)+1,
      (CHARINDEX('*',line) -1)-CHARINDEX('%',line)) )) as Float) /1024 ,0)as 'freespace(GB)'
from #output
where line like '[A-Z][:]%'
order by drivename

结果是;

drivename   capacity(GB)    freespace(GB) 
C:\            120                36 
D:\            100                 7

我想这样添加:'freespace(GB) > 10'

如何添加这个条件?

最佳答案

使用 CTE 或子查询:

;WITH cte as
(
select rtrim(ltrim(SUBSTRING(line,1,CHARINDEX('|',line) -1))) as drivename
      ,round(cast(rtrim(ltrim(SUBSTRING(line,CHARINDEX('|',line)+1,
      (CHARINDEX('%',line) -1)-CHARINDEX('|',line)) )) as Float)/1024,0) as 'capacity(GB)'
      ,round(cast(rtrim(ltrim(SUBSTRING(line,CHARINDEX('%',line)+1,
      (CHARINDEX('*',line) -1)-CHARINDEX('%',line)) )) as Float) /1024 ,0)as 'freespace(GB)'
from #output
where line like '[A-Z][:]%'
)
SELECT *
FROM cte
WHERE [freespace(GB)] > 10
order by drivename;

其次,这是不理解的典型例子 Logical Query Processing

关于SQL Server - Where 条件用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32691282/

相关文章:

c# - SQL SERVER 中的 DAX IFERROR 函数

sql - 如何将包含列表的变量传递给动态 SQL 查询?

sql-server - 为什么 SQL 语言使用 IS NULL 或 IS NOT NULL 而不是 = NULL 或 <> NULL?

sql - T-SQL : How to return 0 rows in from stored procedure, 以及如何使用 XACT_ABORT 和 TRY/CATCH

sql - nvarchar 在存储过程中限制为 8000 个字符

c# - 使用 C# 选择 oracle 日期列

sql 查找列停止递增的行

php - 数据库提取后消除表中的重复值

sql - 查询where删除在插入新表之前需要条件

sql-server - 如何确定 numeric(18,2) 是否包含小数位?