最后一条记录然后从SQL语句中删除文本并替换为空格或其他字符

时间:2015-10-30 15:15:40

标签: sql sql-server

我有一个来自SQL Server的SQL select语句,它从动态表中将文本放在一起并创建一个union语句。然后,我将此语句复制到Oracle SQL Developer中以访问Oracle数据库以获取计数或最小/最大列,或者其他任何内容。我的查询与此类似:

'Select ' + a.column1 + 'from' + a.tablename + 'where ' + a.column1 + '= 123' + 'UNION ALL' 
from Mytable a where a.tablename = 'MYTABLENAMEHERE'

然后我得到一个包含20个表的列表,然后将其剪切/粘贴到Oracle中以获得结果。

我的问题是(这可能是一个愚蠢的问题,我只想知道如何在SQL中执行)是最后一条记录的输出在其末尾有“UNION ALL”而没有“;” Oracle需要这样我总是要在最后一条记录中将其删除。

如何判断SQL何时替换“UNION ALL”并替换为“;”终结器声明,以便当我剪切并粘贴它时,我不必每次都删除它?

对专家们好奇!

1 个答案:

答案 0 :(得分:1)

如果当前记录是最后一个记录,您可以查看案例句子,在这种情况下,不打印UNION ALL:

select 'Select ' + a.column1 + 'from' + a.tablename + 'where ' + a.column1 + '= 123'
+ case when (select count(*) from Mytable where tablename=a.tablename)=ROW_NUMBER() OVER(order by a.tablename desc) then ';' else ' UNION ALL' end 
from Mytable a where a.tablename = 'MYTABLENAMEHERE'