如何将服务器名称和命名实例与@@ servername分开。我知道我可以使用serverproperty来收集机器名称或实例名称,但我正在处理两个表,我必须在表名上加入。 Table1只有服务器名称为“TESTDB01”,Table2具有服务器名称,实例名称为TESTDB01 \ InstanceName。
当我将这些表连接在一起时,任何带有命名实例的内容都将被遗漏,因为它具有“\ InstanceName”,只会获取默认实例。
答案 0 :(得分:2)
你可以用这个:
LEFT(@@SERVERNAME,CHARINDEX('\',@@SERVERNAME)-1)
但是你最好在你的桌子中将它们分开,以使你的查询更加可靠。使用这些字符串函数的连接条件经常(通常)导致查询性能较差。 LEFT()
和RIGHT()
可以使用索引,但通常不会; SUBSTRING()
不能。
答案 1 :(得分:0)
只需在加入条件中使用替换
on substring(tbl2.instancename, 1, CharIndex('\', tbl2.instancename) - 1)
= tbl1.servername