当我使用动态 SQL 查询时,数据库中未显示土耳其语字符
Turkish Characters aren't shown in db when i use dynamic SQL Query
我有一个关于 Turksih 字符的问题
我正在使用动态 sql 查询,当我看到 table 土耳其语字符显示在英语宪章等中时,看到 's' 而不是 'ş'。
当我不使用动态查询时,我没有任何问题。
但是我必须使用动态查询。我的查询是:
declare @sql nvarchar(max)
SET @Sql = concat('insert into ewrim.', QUOTENAME(@Tc),
'(', QUOTENAME(@sutunadi1),',',QUOTENAME(@sutunadi2) ,', gun, ay, yil, saat, dakika, islem) '
,'VALUES (' , @ilk_agirlik,',' , @son_agirlik ,',',convert(varchar(2),day(GETDATE())) ,',',convert(varchar(2),month(GETDATE())) ,',' , convert(varchar(4),year(GETDATE())) ,',' , convert(varchar(2),datepart(hh,GETDATE())) ,',' , convert(varchar(2),datepart(mi,GETDATE())) ,',' , char(39), @islem,char(39) ,')')
EXECUTE sp_executesql @Sql
首先你应该显示sql查询:
declare @sql nvarchar(max)
SET @Sql = concat('insert into ewrim.',...
SELECT @sql;
可能的场景:
1) 您的变量设置为 VARCHAR()
:
DECLARE @s VARCHAR(10) = 'ş';
SELECT @s;
-- s
应该是:
DECLARE @s2 NVARCHAR(10) = N'ş';
SELECT @s2;
-- ş
2) 您在 table 中的列不允许存储特定字符:
DECLARE @s2 NVARCHAR(10) = N'ş';
DECLARE @t TABLE (col VARCHAR(10)); -- it depends on locale
INSERT INTO @t(col) VALUES (@s2);
SELECT * FROM @t;
-- s
我有一个关于 Turksih 字符的问题
我正在使用动态 sql 查询,当我看到 table 土耳其语字符显示在英语宪章等中时,看到 's' 而不是 'ş'。 当我不使用动态查询时,我没有任何问题。
但是我必须使用动态查询。我的查询是:
declare @sql nvarchar(max)
SET @Sql = concat('insert into ewrim.', QUOTENAME(@Tc),
'(', QUOTENAME(@sutunadi1),',',QUOTENAME(@sutunadi2) ,', gun, ay, yil, saat, dakika, islem) '
,'VALUES (' , @ilk_agirlik,',' , @son_agirlik ,',',convert(varchar(2),day(GETDATE())) ,',',convert(varchar(2),month(GETDATE())) ,',' , convert(varchar(4),year(GETDATE())) ,',' , convert(varchar(2),datepart(hh,GETDATE())) ,',' , convert(varchar(2),datepart(mi,GETDATE())) ,',' , char(39), @islem,char(39) ,')')
EXECUTE sp_executesql @Sql
首先你应该显示sql查询:
declare @sql nvarchar(max)
SET @Sql = concat('insert into ewrim.',...
SELECT @sql;
可能的场景:
1) 您的变量设置为 VARCHAR()
:
DECLARE @s VARCHAR(10) = 'ş';
SELECT @s;
-- s
应该是:
DECLARE @s2 NVARCHAR(10) = N'ş';
SELECT @s2;
-- ş
2) 您在 table 中的列不允许存储特定字符:
DECLARE @s2 NVARCHAR(10) = N'ş';
DECLARE @t TABLE (col VARCHAR(10)); -- it depends on locale
INSERT INTO @t(col) VALUES (@s2);
SELECT * FROM @t;
-- s