首页 > 解决方案 > 在sql表中存储不同的语言

问题描述

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

有什么办法可以帮助sql管理更好地阅读这些语言?

感谢帮助

数据库结构

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

标签: sql-server

解决方案


真的不需要这是一个多行表值函数,它的性能会比内联表值函数差得多。

您遇到的问题是您已将变量声明为 a varchar,而不是 a 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

推荐阅读