删除数据OUT输出的最后3个字符
我有以下SQL查询:删除数据OUT输出的最后3个字符
SELECT Sys.Name0, Sys.User_Name0, SF.FilePath, SF.Filename, Count(SF.FileName) AS FileCount, Sum(SF.FileSize/1024/1024) AS 'Used Space'
FROM v_R_System Sys
INNER JOIN v_GS_SoftwareFile SF ON Sys.ResourceID = SF.ResourceID
WHERE SF.FilePath LIKE '%' + 'Users' + '%' + '%documents%'
AND SF.FileSize > 0
GROUP BY Sys.Name0, Sys.User_Name0, SF.Filename, SF.FilePath
HAVING Count(SF.FileName) > 0
ORDER BY Sys.Name0 DESC
的问题是,我得到了太多的信息。例如,我想排除记录并不计算任何FILENAME就像.exe,.dll,.ico的地方。
如果你想排除,你可以将其添加到where子句中的记录:
AND RIGHT(FileName,4) NOT IN('.exe', '.dll', '.ico', 'etc.')
OR
AND Filename Not Like '%.exe' AND Filename Not Like '%.dll' AND Filename Not Like '%.ico' AND etc....
好吧,我会在哪个位置放两个语句,因为我不知道如何放置额外的'where'语句 – dwhite
@dwhite每个select语句只能有一个WHERE子句,FYI –
@dwhite我的意思是你应该添加这些陈述到你现有的where子句中。对困惑感到抱歉。 –
使用此Where子句(假设SQL Server)的
Where SF.FilePath like '%'+'Users'+'%' +'%documents%'
and SF.FileSize > 0
And FileName Not Like '%.exe'
And FileName Not Like '%.dll'
And FileName Not Like '%.ico'
这应该让你走....
这并没有工作,仍然报告ini,dll但没有删除exe – dwhite
@dwhite更新回答,道歉。 –
您可以简单地将它添加到where子句中作为额外条件。为排除文件名:
AND RIGHT(FileName,4) NOT IN('.exe', '.dll', '.ico', 'etc.')
排除大于1mb的文件大小。
AND SF.FileSize > 1
声明全文:
SELECT
Sys.Name0,
Sys.User_Name0,
SF.FilePath,
SF.Filename,
Count(SF.FileName) AS FileCount,
Sum(SF.FileSize/1024/1024) AS 'Used Space'
FROM
v_R_System Sys
INNER JOIN v_GS_SoftwareFile SF ON Sys.ResourceID = SF.ResourceID
WHERE
SF.FilePath LIKE '%' + 'Users' + '%' + '%documents%'
AND SF.FileSize > 1
AND RIGHT(FileName,4) NOT IN('.exe', '.dll', '.ico', 'etc.')
GROUP BY Sys.Name0, Sys.User_Name0, SF.Filename, SF.FilePath
HAVING Count(SF.FileName) > 0
ORDER BY Sys.Name0 DESC
好吧,这很好,但是,我有另一个问题,我想出口到Excel CSV,但它超过200万线,有没有办法一次只出口100万线? – dwhite
你使用MySQL或MS SQL Server? – jarlh
也许通过使用where子句?或者如果你想让他们不被计算但仍然返回,你可以使用条件聚合。 –
请阅读[this](http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/)了解改进问题的一些提示。 – HABO