首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在存储过程SQL中转换utf-8

无法在存储过程SQL中转换utf-8
EN

Stack Overflow用户
提问于 2018-04-20 17:04:19
回答 1查看 353关注 0票数 0

我被困在utf-8格式中了。我使用了使用UTF-8的CAST或CONVERT。即使我在查询字符串前面设置了字符N,但它仍然不起作用。

我的存储过程:

代码语言:javascript
复制
ALTER PROCEDURE [dbo].[SPC_SP_HSDXTChinh_BangSo4_Fake]
    @idDuAn NUMERIC(18, 0),
    @idGoiThau NUMERIC(18, 0),
    @idDonVi INT
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    DECLARE @resultString NVARCHAR(MAX);
    DECLARE @queryString NVARCHAR(MAX);
    DECLARE @Str_TinhHopLe NVARCHAR(255), @Str_DanhGia NVARCHAR(255), @Str_XepHang NVARCHAR(255);
    SET @Str_TinhHopLe = 'N''Kết quả đánh giá tính hợp lệ của HSĐXTC''';
    SET @Str_DanhGia = 'N''Giá đánh giá''';
    SET @Str_XepHang = 'N''Xếp hạng các HSDT''';

    SELECT @resultString = COALESCE(@resultString + ',', '') + RES.TenNhaThau
    FROM (
        SELECT '[' + TenNhaThau + ']' AS TenNhaThau
        FROM [SPC_fn_HSDXTChinh_NhaThau_CoTinhHopLe] (@idDuAn, @idGoiThau, @idDonVi)
    ) RES
    --PRINT @resultString
    PRINT @Str_TinhHopLe;
    SET @queryString = '
    SELECT *
    FROM (
        SELECT 1 AS STT,' + @Str_TinhHopLe + '  AS NoiDung,
            CAST(RES.TenNhaThau AS NVARCHAR(255)) AS TenNhaThau, 
            CAST(RES.KetQuaDanhGia AS VARCHAR(25)) AS KetQuaDanhGia
        FROM [SPC_fn_HSDXKThuat_BangSo4] (' + CAST(@idDuAn AS VARCHAR(20)) + ',' + CAST(@idGoiThau AS VARCHAR(20)) + ',' + CAST(@idDonVi AS VARCHAR(10)) + ') RES
        ) SRC
    PIVOT(MAX(KetQuaDanhGia) FOR TenNhaThau IN (' + @resultString + ')) P 
    UNION ALL
    SELECT *
    FROM (
        SELECT 2 AS STT
            ,' + @Str_DanhGia + ' AS NoiDung,
                CAST(RES.TenNhaThau AS NVARCHAR(255)) AS TenNhaThau, 
                CAST(RES.GiaTri AS VARCHAR(25)) AS GiaTri 
            FROM [SPC_fn_HSDXKThuat_BangSo4] (' + CAST(@idDuAn AS VARCHAR(20)) + ',' + CAST(@idGoiThau AS VARCHAR(20)) + ',' + CAST(@idDonVi AS VARCHAR(10)) + ') RES
        ) SRC2
    PIVOT(MAX(GiaTri) FOR TenNhaThau IN (' + @resultString + ')) P 
    UNION ALL
    SELECT *
    FROM (
        SELECT 3 AS STT
            ,' + @Str_XepHang + ' AS NoiDung,
                CAST(RES.TenNhaThau AS NVARCHAR(255)) AS TenNhaThau, 
                CAST(ROW_NUMBER() OVER(ORDER BY GiaTri) AS VARCHAR(25)) AS XepHang
            FROM [SPC_fn_HSDXKThuat_BangSo4] (' + CAST(@idDuAn AS VARCHAR(20)) + ',' + CAST(@idGoiThau AS VARCHAR(20)) + ',' + CAST(@idDonVi AS VARCHAR(10)) + ') RES
        ) SRC2
    PIVOT(MAX(XepHang) FOR TenNhaThau IN (' + @resultString + ')) P 
    ';
    PRINT @queryString;
    EXEC (@queryString);
END

运行后存储的输出消息的一部分:

代码语言:javascript
复制
SELECT 
    1 AS STT,
    N'K?t qu? dánh giá tính h?p l? c?a HSÐXTC' AS NoiDung,
    CAST(RES.TenNhaThau AS NVARCHAR(255)) AS TenNhaThau, 
    CAST(RES.KetQuaDanhGia AS VARCHAR(25)) AS KetQuaDanhGia
FROM 
    [SPC_fn_HSDXKThuat_BangSo4] (60006000000000166, 60006000000000347, 60006) RES

您可以看到错误文本:N'K?t qu? dánh giá tính h?p l? c?a HSÐXTC'

我想输出:Kết quả đánh giá tính hợp lệ của HSĐXTC

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2018-04-20 17:17:00

在您的过程中更改以下行:

代码语言:javascript
复制
SET @Str_TinhHopLe = N'Kết quả đánh giá tính hợp lệ của HSĐXTC';
SET @Str_DanhGia = N'Giá đánh giá';
SET @Str_XepHang = N''Xếp hạng các HSDT';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49937957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档