有谁知道如何返回数据库名称?我似乎不知道如何sys.database_files加入sys.databases。
SELECT
    a.NAME as FileName,
    FG.name as FileGroup,
    a.physical_name as FilePath,
    a.type_desc as FileType,
    CONVERT(DECIMAL(12,2),ROUND(a.size/128.000,2)) AS [Size],
    CONVERT(DECIMAL(12,2),ROUND(FILEPROPERTY(a.name,'SpaceUsed')/128.000,2)) AS [Used] ,
    CONVERT(DECIMAL(12,2),ROUND((a.size-FILEPROPERTY(a.name,'SpaceUsed'))/128.000,2)) AS [Free]
FROM 
    sys.database_files a
LEFT JOIN sys.filegroups FG ON 
    FG.data_space_id = a.data_space_id
Run Code Online (Sandbox Code Playgroud) 我有一个 varchar 列,它应该只包含字母和数字,而不能包含其他字符,例如;: , @ 等等
我认为这会起作用,但它不起作用:
select * from table
where field NOT LIKE '[a-z0-9]'
Run Code Online (Sandbox Code Playgroud) 我有一个附件表,以字节为单位存储文档的大小。
我需要以 KB 或 MB 显示所有文档的结果集。如果文档小于 1MB,则以 KB 为单位;如果文档大于 1MB,则以 MB 为单位。
目前我的查询中有这个,但我正在努力使显示在舍入方面正确格式化。
    CASE WHEN D.DocumentSize < 1000000 THEN
        CONCAT(D.DocumentSize / 1024, 'KB')
    ELSE
        CONCAT(D.DocumentSize / 1048576, 'MB')
    END AS DocumentSizeText,
Run Code Online (Sandbox Code Playgroud)
以下是一些示例值:
87336
1458250
346
8434
8434
Run Code Online (Sandbox Code Playgroud)
346 字节也将显示 0KB,因此理想情况下显示 1KB 将是理想的最小值。
我有以下查询,这些查询返回开始日期或结束日期在指定的日期范围之间的记录。
DECLARE @ReportStartDate date = '01 Apr 2019'
DECLARE @ReportEndDate date = '01 May 2019'
select * from #temp
where
            (StartDate between @ReportStartDate and @ReportEndDate) or 
            (EndDate between @ReportStartDate and @ReportEndDate) or 
            (EndDate is null)
Run Code Online (Sandbox Code Playgroud)
我的问题是开始日期为'2019年3月1日',结束日期为'2019年8月4日',这意味着它在2019年4月1日至2019年5月1日的日期范围内,但我的标准不满足那。
我如何包括这些类型的记录?
样本数据:
CREATE TABLE #temp
(
    ID int,
    StartDate datetime,
    EndDate datetime NULL
)
insert into #temp
(
    ID,
    StartDate,
    EndDate
)
select
    1,
    '01 Mar 2019',
    NULL
union all
select
    2,
    '01 Mar 2019',
    '04 Aug 2019'
union all
select
    3,
    '14 Jul …Run Code Online (Sandbox Code Playgroud)