Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何选择一致的中间字符串_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 如何选择一致的中间字符串

Sql 如何选择一致的中间字符串,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个数据是一致的需要拿起一个特定的字符串 样本数据: Declare @v varchar(MAX) = ' THEN ''ERC'' ELSE ''UNKNOWN'' END As Name, max(dt) as Effective_dt from M_stg.Employee_zone z left join SD.ods.r_country r on ''.'' + r.country__code = rig

我有一个数据是一致的需要拿起一个特定的字符串

样本数据:

Declare @v varchar(MAX) = '
 THEN ''ERC'' ELSE ''UNKNOWN'' END As Name,
            max(dt) as Effective_dt
            from M_stg.Employee_zone z 
            left join SD.ods.r_country r on ''.'' + r.country__code = right(z.EMP,3) and r.IND = 1'
我怎么能只挑

雇员区

从那根绳子上我试过了

这边

select LTRIM(RTRIM(PARSENAME(REPLACE (SUBSTRING(@v,CHARINDEX('FROM',@v),LEN(@v) ),'',' '),2)))

建议我使用CHARINDEX函数查找:

from子字符串两边都有空格

这个。在from之后的字符

后面的下一个空格


并获取最后两个charindex之间的子字符串。

如果试图从硬编码字符串中检索表名,请尝试以下操作:

select left(right (@v, len(@v)-(charindex('M_stg.', @v)+len('M_stg.')-1)),charindex(' ',right (@v, len(@v)-(charindex('M_stg.', @v)+len('M_stg.')-1))) -1) 

我认为以下几点并不漂亮,但它确实起到了作用:

select SUBSTRING(LTRIM(SUBSTRING(@v, CHARINDEX('FROM', @v)+4, LEN(@v))),
CHARINDEX('.', LTRIM(SUBSTRING(@v, CHARINDEX('FROM', @v)+4, LEN(@v))))+1,
CHARINDEX(' ',
SUBSTRING(LTRIM(SUBSTRING(@v, CHARINDEX('FROM', @v)+4, LEN(@v))),
CHARINDEX('.', LTRIM(SUBSTRING(@v, CHARINDEX('FROM', @v)+4, LEN(@v))))+1, LEN(@v)))-1)

假设您希望第一个表名出现在字符串中第一个FROM子句之后,并且表名后面是空格而不是制表符。

选择“Employee_zone”;-:-你的问题毫无意义,你能改进它吗?你能不能显示多个示例字符串?你的变量会因为内部引号而导致错误。如果你不能给出不出错的样本数据,我不相信你的问题是完整的,或者你提供了足够的细节。我喜欢看到这样的答案,他们在不提供免费代码编写服务的情况下很有帮助+1@MJH我不是一个完全依赖你答案的新手,我只是提供了一些样本数据和更多的东西来补充这一点。所以请不要认为我们在做慈善工作……学习和生活也是如此sharing@mohan111我看得出你不是新手,你的名声是一个很好的标志。我的评论并不是针对你的,所以请不要冒犯我,我每天都会看到类似的问题,人们都懒得做简单的网络搜索,宁愿发布一个懒惰的问题,因为他们知道有人会给他们一个免费的答案,而不必做任何工作。同样,这并不是针对你的,但是关于从一个字符串中提取一个字符串有很多问题。一个好的、经过充分研究的问题会比一个坏问题得到更多的帮助和同情。