Это может быть боль в шее, поскольку SQL не имеет полной поддержки регулярных выражений (выражений).Таким образом, поиск внутри строки с такой сложностью будет очень сложным.Причина, по которой я вижу это сложным, заключается в том, что вы предоставляете только простой запрос.Пока есть оконные запросы, CTE, циклы ... и т. Д.Итак, вам нужно придумать другой и самый простой способ сделать это.В противном случае это будет долгая поездка!
вот пример, который будет применен к вашему примеру (работает с простыми запросами, в которых есть только один FROM
):
DECLARE
@t TABLE(Tbl_name VARCHAR(250), Col_names VARCHAR(250), Query VARCHAR(MAX) )
INSERT INTO @t VALUES
('H_Website','Website_ID','SELECT W.WebSiteID, C.Channel_ID FROM Enroll W LEFT JOIN CHANNEL_TYPE C ON W.ChannelNAME = C.ChannelNAME')
SELECT
Tbl_name
, Col_names
, RTRIM(LTRIM(LEFT(SecondPart, CHARINDEX(' ', SecondPart)))) Source_Tbl
FROM (
SELECT *,
LTRIM(SUBSTRING(FirstPart, CHARINDEX(' ', FirstPart) , LEN(FirstPart) )) SecondPart
FROM (
SELECT
Tbl_name
, Col_names
, LTRIM(SUBSTRING(Query,CHARINDEX(' FROM ',Query), 50 )) FirstPart
FROM @t
) D
) C