sql-server - 在 SSMS 中,如何使用在 KEY 字 FROM 后返回表名的函数
问题描述
CREATE FUNCTION [dbo].GetLatestTable (@id int)
RETURNS nvarchar(max)
BEGIN
declare @a varchar(150)
declare @b varchar(150)
declare @c varchar(150)
set @c = (select '%ID' + Cast(@id as nvarchar))
set @a = (select top 1 name
from sys.tables
where name like @c
order by create_date desc)
set @b = '[dbo].[' + @a + ']'
RETURN @b;
END;
SELECT * INTO #table1
from
(SELECT * FROM GetLatestTable (1456)) as temp
我想将使用包含特定整数的名称创建的最新表存储到临时表中。
示例表名称如下所示:[database].[dbo].[RQ39411ID1367]
我需要从函数中获取它,因为稍后我需要在查询中将此函数用于其他表名。
请帮助我更改 SSMS 的语法。
解决方案
假设您无法重新设计数据库,您可以执行以下操作:
CREATE FUNCTION [dbo].GetLatestTable (@id int)
RETURNS nvarchar(261)
AS
BEGIN
RETURN (
SELECT TOP 1 quotename(s.name) + '.' + quotename(t.name)
FROM sys.tables As t
JOIN sys.schemas As s
ON t.schema_id = s.schema_id
WHERE t.name LIKE '%ID' + CAST(@Id as nvarchar(11))
ORDER BY t.create_date DESC
);
END
并像这样使用它
DECLARE @LastTableName nvarchar(216) = dbo.GetLatestTable(1456);
推荐阅读
- python - 自定义损失 - 对 tf.Tensor 的迭代适用于虚拟数据,但不适用于 model.fit_generator
- apache-kafka - Alpakka Kafka 流永远不会被终止
- flutter - Flutter:滚动小部件列表
- haskell - 为什么函数 concat 使用 foldr?为什么不折叠'
- haskell - 在 Obelisk OAuth 项目中找不到“路由”和“Https”
- salt-stack - 我如何告诉 Salt Master 下载文件以使其对无法访问互联网的奴才可用?
- c# - 通过 HTTP 客户端与 Web api 通信时发生内部服务器错误
- google-data-studio - 有没有办法在 Google Data Studio 中创建邮政编码级别的地理地图?
- c# - 如何解决错误查询值和目标字段的数量不一样。在 c# windows 应用程序中
- mysql - 创建数据库时在 MySQL 中使用默认字符集和使用默认字符集有什么区别