【问题标题】:SQL how to displayed result between to known phrases that will always been in the cellSQL如何在单元格中的已知短语之间显示结果
【发布时间】:2016-07-11 18:18:12
【问题描述】:

我已经阅读了相当多的内容,并且正在努力弄清楚如何做到这一点。

基本上,我有一列已标识为 Member_Type,该列中显示的是一个连接字符串,如下所示:

Provider=SQLOLEDB.1;User ID=User;Password=Password;Data Source=Hostname;Initial Catalog=DESIRED_RESULT;Persist Security Info=TRUE/FALSE;Min Pool Size=5;Max Pool Size=x

基本上,在所有连接字符串中,我想在 Member_Type 列的结果中返回的唯一内容是短语“Initial Catalog=”之后但在“;Persist Security”之前的所有内容,因为这些短语将出现在每个结果,变量和重要信息就是将返回的 Initial Catalog 数据库名称。

由于用户 ID、密码和数据源在数百个不同的网站上都会有所不同,因此字符数可能不适合我。

谁能告诉我如何获得出现在 Catalog= 和 ;Persist 之间的结果?

谢谢!

【问题讨论】:

  • 哎呀。你为什么要这样存储数据库密码?它缺乏安全性。
  • 是的,甚至不要让我开始讨论密码问题......这是另一个完全不同的对话哈哈。

标签: sql sql-server trim


【解决方案1】:

这应该可以满足您的需求:

DECLARE @variable VARCHAR(255) = 'Provider=SQLOLEDB.1;User ID=User;Password=Password;Data Source=Hostname;Initial Catalog=DESIRED_RESULT;Persist Security Info=TRUE/FALSE;Min Pool Size=5;Max Pool Size=x'

SELECT  SUBSTRING(STUFF(@variable ,1 ,CHARINDEX('Catalog=' ,@variable) + 7 ,'') ,0 ,
              CHARINDEX(';Persist' ,STUFF(@variable ,1 ,CHARINDEX('Catalog=' ,@variable) + 7 ,'')))

结果:DESIRED_RESULT

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多