在sql表

时间:2018-06-05 08:22:03

标签: sql-server

使用SQL服务器管理,为词汇表创建表格,例如,您将需要不同的单词的不同翻译..我正在存储15种不同的语言,如法语,意大利语,西班牙语..但是当它们存储在表格中时它们是输出正常,但在创建表值函数时,它们输出不正确。我的回报是一个简单的选择,对于保加利亚语,它只输出问号

有没有办法帮助sql管理更好地阅读这些语言?

欣赏帮助

DATABASE STRUCTURE

ALTER FUNCTION [dbo].SelectExportObject ( @TITLE NVARCHAR(MAX) ) 
RETURNS @Result TABLE
( 
  BG                NVARCHAR(MAX) ,
  CS                NVARCHAR(MAX) ,
  DE                NVARCHAR(MAX) ,
  EL                NVARCHAR(MAX) ,
  EN                NVARCHAR(MAX) ,
  ES                NVARCHAR(MAX) ,
  ET                NVARCHAR(MAX) ,
  FI                NVARCHAR(MAX) ,
  FR                NVARCHAR(MAX) ,
  GA                NVARCHAR(MAX) ,
  HU                NVARCHAR(MAX) ,
  IT                NVARCHAR(MAX) ,
  LT                NVARCHAR(MAX) 
 )

AS
BEGIN

    DECLARE @BG VARCHAR(MAX) 
    DECLARE @CS VARCHAR(MAX)
    DECLARE @DE VARCHAR(MAX)
    DECLARE @EL VARCHAR(MAX)
    DECLARE @EN VARCHAR(MAX)
    DECLARE @ES VARCHAR(MAX)
    DECLARE @ET VARCHAR(MAX)
    DECLARE @FI VARCHAR(MAX)
    DECLARE @FR VARCHAR(MAX)
    DECLARE @GA VARCHAR(MAX)
    DECLARE @HU VARCHAR(MAX)
    DECLARE @IT VARCHAR(MAX)
    DECLARE @LT VARCHAR(MAX)


    select  @BG = c.BG,
           @CS = c.CS, 
           @DE = c.DE, 
           @EL = c.EL, 
           @EN = c.EN, 
           @ES = c.ES, 
           @ET = c.ET, 
           @FI = c.FI, 
           @FR = c.FR, 
           @GA = c.GA,
           @HU = c.HU,
           @IT = c.IT,  
           @LT = c.LT
    from tblTEST c where c.title = @Title


    /* Populate the values of @Str1 and @Str2 how ever you need to */

 INSERT INTO @Result (BG,CS,DE,EL,EN,ES,ET,FI,FR,GA,HU,IT,LT)
 VALUES (@BG,@CS,@DE,@EL,@EN,@ES,@ET,@FI,@FR,@GA,@HU,@IT,@LT)

    RETURN;
END

1 个答案:

答案 0 :(得分:2)

实际上不需要这是一个多行表值函数,它的表现比内联表值函数差得多。

您遇到的问题是您已将变量声明为varchar,而不是nvarchar,但是,如果我们将其更改为内联表值函数,则问题不会出现问题。 ;甚至存在(因为这些变量消失):

ALTER FUNCTION [dbo].SelectExportObject ( @Title nvarchar(MAX) ) 
RETURNS TABLE
AS

    SELECT t.BG,
           t.CS, 
           t.DE, 
           t.EL, 
           t.EN, 
           t.ES, 
           t.ET, 
           t.FI, 
           t.FR, 
           t.GA,
           t.HU,
           t.IT,  
           t.LT
    FROM tblTEST t
    WHERE t.title = @Title;

GO