Sql 从包含查询的列中获取表的名称
我有下表:Sql 从包含查询的列中获取表的名称,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有下表: ColID Columns 1 SELECT Col1, Col2, Col3, Col4, Col5 FROM MyTab 我想在返回架构和表名后获取表名。选择“其他内容”、“来自”、[FROM]、FROM_DATE、FROMSH的FROMMAGE或从dbo.MyFunction(GETDATE())MY.SomeCol上的MY JOIN dbo.MyTable MT=MT.SomeCol@jarlh我无法理解您的查询从名为FROMSH的表中选择文字字符串,'what F
ColID Columns
1 SELECT Col1, Col2, Col3, Col4, Col5 FROM MyTab
我想在返回架构和表名后获取表名。
选择“其他内容”、“来自”、[FROM]、FROM_DATE、FROMSH的FROMMAGE
或从dbo.MyFunction(GETDATE())MY.SomeCol上的MY JOIN dbo.MyTable MT=MT.SomeCol
@jarlh我无法理解您的查询从名为FROMSH
的表中选择文字字符串,'what FROM else'
,以及FROM DATE
和FROMMAGE
(法语表示奶酪)列FROMSH
,@StrangePerson.@jarlh拼写正确:fromage;)如果您有MyTab t中的,那会怎么样?一个例子远远不足以让我们开始回答这个问题,但您在这里真正要问的是如何解析SQL语句(批处理?),并使用SQL确定引用对象之类的内容。T-SQL的字符串操作和检查功能非常差;如果我诚实的话,这是你做这件事的最后一种语言。它对Regex没有本机支持,并且它的LIKE
表达式非常有限。你最好找一个开发良好的代码解析器来做这件事。@GordonLinoff希望我的查询没有别名,但很有道理。这能回答你的问题吗?与上一个问题有什么不同?首先使用查找t-sql解析器
。这将让你避免所有的乐趣与选择。。。从富作为酒吧代码>,选择。。。从[到从日期]代码>,连接。
SELECT SUBSTRING(Columns, CHARINDEX('FROM',Columns) + LEN('FROM'), LEN(Columns))
FROM yourTable