是否可以仅使用SQL查询将IP地址从"Connectionstring“列添加到"IP_Adress”列?无论IP地址的长度如何,查询都应对所有行执行此操作。

发布于 2017-01-17 19:56:21
你可以像下面这样:
DECLARE @Tmp VARCHAR(50) = 'Data Source=10.16.190.2;Initial Catalog'
SELECT REPLACE(LEFT(@Tmp, CHARINDEX(';Initial', @Tmp, 0) - 1), 'Data Source=', '') -- 10.16.190.2用法:
UPDATE Laeger
SET IP_Adresse = REPLACE(LEFT(Connectionstring, CHARINDEX(';Initial', Connectionstring, 0) - 1), 'Data Source=', '')发布于 2017-01-17 19:55:26
这样的东西应该可以为您做这项工作
UPDATE *TABLENAME*
SET IP_ADDRESS = SUBSTRING(CONNECTRIONSTRING, 13, (CHARINDEX(CONNECTRIONSTRIONG, ';', 13) - 13)发布于 2017-01-17 19:55:48
如果DataSource部件始终位于开头。然后,您可以通过组合使用SUBSTRING和CHARINDEX来实现这一点。
查询
UPDATE [your_table_name]
SET [IP_Address] = SUBSTRING(
[connectionstring],
CHARINDEX('=', [connectionstring], 1) + 1,
CHARINDEX(';', [connectionstring], 1) -
CHARINDEX('=', [connectionstring], 1) - 1);否则
您可以组合使用PATINDEX、RIGHT、LEFT和CHARINDEX。
据我所知,DataSource部件可以在连接字符串中的任何位置。
因此,使用PATINDEX从整个字符串中找到单词DataSource=的位置,根据该位置执行相应的函数。
查询
SELECT
REPLACE((
LEFT(
RIGHT([connectionstring], LEN([connectionstring]) -
PATINDEX('%Data Source=%', [connectionstring]) + 1),
CHARINDEX(';',
RIGHT([connectionstring], LEN([connectionstring]) -
PATINDEX('%Data Source=%', [connectionstring]) + 1)) - 1)),
'Data Source=', '') AS [IP_Adress]
FROM [your_table_name];如果你想更新,
UPDATE [your_table_name]
SET [IP_Address] = REPLACE((
LEFT(
RIGHT([connectionstring], LEN([connectionstring]) -
PATINDEX('%Data Source=%', connectionstring) + 1),
CHARINDEX(';',
RIGHT([connectionstring], LEN([connectionstring]) -
PATINDEX('%Data Source=%', [connectionstring]) + 1)) - 1)),
'Data Source=', '');https://stackoverflow.com/questions/41696329
复制相似问题