【问题标题】:Creating a variable that combines other variables in SQL Server在 SQL Server 中创建一个组合其他变量的变量
【发布时间】:2020-03-24 16:51:40
【问题描述】:

我在练习SQL Server动态变量,这里遇到了问题。

假设我有两个动态变量:

declare @firstname varchar (200)
declare @lastname varchar (200)

set @firstname = 'select firstname from Person.Person'
set @lastname = 'select lastname from Person.Person'

我的问题是如何创建第三个变量 @fullname 组合 @firstname@lastname 以显示全名?

我试过这样的语法:

declare @fullname varchar (200)
set @fullname = @firstname + ' ' + @lastname 
exec (@fullname)

但它不起作用,任何想法将不胜感激!

【问题讨论】:

  • 您不需要execset 做你想做的事。
  • 谢谢,但是如何打印全名列表?
  • 我想你的意思是SET @FullName = 'SELECT FirstName + ''' ''' + LastName FROM Person.Person'...但是为什么呢?为什么在可以避免的情况下使用动态 SQL?
  • 我并不完全清楚您要达到的目标...您希望看到存储在@fullname 中的内容是什么?还要重申@Sami 所说的话,如果可以的话,请避免使用动态 SQL,尤其是如果您不完全熟悉它的使用。

标签: sql sql-server dynamic-variables


【解决方案1】:
declare @fullname varchar (200)

Select @fullname  = firstname + ' '+lastname 
 From Person.Person
 Where ID={somevalue}

【讨论】:

  • 正如 OP 在评论中所说,他想打印列表,那么这个查询如何使用变量来实现呢?
  • 你可能是对的约翰,但根据代码我认为 OP 试图使用动态 SQL。
【解决方案2】:

您需要简单地编写查询,如下所示。如果您希望按照您在评论中所说的那样打印名字和姓氏列表,我认为该变量没有任何具体原因。

这是因为一个变量一次只能存储一个值。

Select firstname + ' ' + lastname from Person

【讨论】:

    【解决方案3】:

    您可以使用 SET 或在 SELECT 语句中设置变量值。无论哪种方式,您都必须在值赋值操作之外选择该变量才能查看其值。

    declare @firstname varchar (200)
    declare @lastname varchar (200)
    declare @fullname varchar (200)
    declare @fullname2 varchar (200)
    
    set @firstname = 'Mickey'
    set @lastname = 'Mouse'
    
    set @fullname = @firstname + ' ' + @lastname
    
    select @fullname2 = @firstname + ' ' + @lastname
    
    select @firstname as [FirstName]
         , @lastname  as [LastName]
         , @fullname  as [FullName]
         , @fullname2 as [FullName2]
    

    这里是demo

    【讨论】:

      猜你喜欢
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      相关资源
      最近更新 更多