我有一些数据库,其名称包括 029jdfj-jh73jsd-hsdjhd7 和 uew723-73823n-783nd 。当我尝试运行select语句时,抛出以下错误:
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '029jdfj'.
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near 'uew723'.
如何从这些数据库中进行选择?
选择语句:
select Name from 029jdfj-jh73jsd-hsdjhd7.dbo.Names where Name like 'JWS Tech' or select Name from uew723-73823n-783nd.dbo.Names where Name like 'JWS Tech'
答案 0 :(得分:0)
在非正统名称周围使用方括号:
select Name from [029jdfj-jh73jsd-hsdjhd7].dbo.Names where Name like 'JWS Tech'
select Name from [uew723-73823n-783nd].dbo.Names where Name like 'JWS Tech'
有关何时以及为何需要以这种方式划分标识符的详细信息,请参见here。
不符合所有标识符规则的标识符必须在Transact-SQL语句中分隔。
答案 1 :(得分:0)
select Name
from [029jdfj-jh73jsd-hsdjhd7].dbo.Names
where Name like '%JWS Tech%'
UNION
select Name
from [uew723-73823n-783nd].dbo.Names
where Name like '%JWS Tech%'
您应该使用union
代替or
来合并2个结果集。
使用%
查找模式时,也请使用like
。此外,如果您的模式名称以数字开头,请更好地使用[]
,如@sstan在答案中所述。