"" char在sql-server中抛出错误

Ciu*_*caS 1 t-sql sql-server special-characters

这不应该是一个非常难以解决的问题,但我在谷歌搜索解决方案的页面.

我有一个用户名为'firstname.lastname'的数据库.示例:john.smith,b.obama,v.putin等.

我尝试在SP中添加这些用户的某些角色

这是我的SP:

ALTER PROCEDURE [dbo].[sp_adaugaUserInRol]
    -- Add the parameters for the stored procedure here
    @Rol varchar(50), 
    @User varchar(32)
AS
BEGIN
declare @sRol varchar(50),
        @sUser varchar(32);
set @sUser = LTRIM(RTRIM(@User))
set @sRol = LTRIM(RTRIM(@Rol))
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    print(' ALTER ROLE ' + @sRol  + ' ADD MEMBER  ' +@User )



END 
Run Code Online (Sandbox Code Playgroud)

如果我为'john'这样的用户使用字符串,'obama'就行了,但是如果我将它用作'john.smith'或'b.obama'我会得到错误Incorrect syntax near '.'.,这是非常合乎逻辑的,因为SQL认为john是一个table和smith是一列(我猜).

我如何告诉SQL john.smith是一个字符串?

Zdr*_*nev 5

把它放在方括号内:

[john.smith]
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您希望符合ANSI SQL标准,请使用双引号:`"john.smith"` (3认同)
  • @CiucaS,请注意,如果是双引号,则必须设置`ANSI_DEFAULTS`或`QUOTED_IDENTIFIER`. (2认同)