我正在将一个 SQL 表/列中的值插入到另一个中。由于其他原因,这些列的数据类型不同,但我不明白为什么 nvarchar(10) 源和 char(10) 目标有时会在 SQL Server 2014 中导致错误:
字符串或二进制数据将被截断。
len(sourcecol) = 10 和 datalength(sourcecol) = 20。
可能是因为 nvarchar 类型的源列中存储了一些不可见的空格/字符?
这一定是我在这里问过的最愚蠢的问题之一,但是我的 SQL 脚本中肯定隐藏着一些非常恶心的问题,阻止它运行。
我正在使用以下示例 CLI 语法调用 cobertura.sql 文件:
psql -h localhost -U myUser -f cobertura.sql myDB
Run Code Online (Sandbox Code Playgroud)
但它抱怨以下错误:
Run Code Online (Sandbox Code Playgroud)psql:cobertura.sql:29: ERROR: "sql " is not a known variable LINE 14: sql := format('insert into cobertura_tmp select count(*) as ... cobertura.sql file:
DO language plpgsql $$
declare
eq record;
sql varchar;
BEGIN
create table if not exists cobertura_tmp (num integer, realtime char(1), lat numeric, lng numeric);
truncate table cobertura_tmp;
for eq in select imei_equipo as imei from cliente_avl_equipo where id_cliente in (select id …Run Code Online (Sandbox Code Playgroud) 我有几个字符被替换为?. 你如何保持表格中的原始字符?我要插入的字符是?; 带腰带的拉丁文小写字母 L。是否可以将此字符添加到表中?
我错误地将 unicode 文本存储到varchar表中的一列中,现在它显示为问号 (???)。
是否有可能从列而不是问号中取回我们的主要信息???
我们有一个带有 SQL Server 数据库的会计程序,并希望启动乌克兰版本。我不确定使用哪种排序规则:乌克兰语或Cyrillic_General?
对于非技术乌克兰语,我们比较了Cyrillic_general和乌克兰语的校对图表,发现表末尾只有细微的差异。那个人认为Cyrillic_general应该没问题。
此外,SQL Server 2012 不再列出乌克兰语排序规则。这是一个令人担忧的理由吗?
有什么建议可以选择吗?
我尝试collation_name在sys.databases. 我正在尝试将 'SQL_Latin1_General_CP1_CS_AS' 更改为 'SQL_Latin1_General_CP1_CI_AS' 以禁用表中的区分大小写。
update d set d.collation_name='SQL_Latin1_General_CP1_CI_AS'
--SELECT name, collation_name
FROM sys.databases d
WHERE name = 'db_name'
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
不允许消息 259,级别 16,状态 1,第 1 行对系统目录进行临时更新。
我遇到了一个错误:“SSIS 无法在 unicode 和非 unicode 字符串数据类型之间转换”,即使源列和目标列都是 unicode (NVARCHAR) 数据类型。源数据库和目标数据库在同一台服务器上。
来源是一个查询:
SELECT
CASE
WHEN [Gender__c] = 'Female' THEN 'N'
WHEN [Gender__c] = 'Male' THEN 'M'
WHEN [Gender__c] = 'Nainen' THEN 'N'
WHEN [Gender__c] = 'Mies' THEN 'M'
When [Gender__c] = 'Ei tiedossa' THEN 'Ei tiedossa'
ELSE NULL
END as Gender__c
FROM [database].[table]
Run Code Online (Sandbox Code Playgroud)
有人见过一样的吗?
如何使用 SQL Server 数据库邮件发送 Unicode 符号?我的目标是发送关于电子邮件主题的符号。比方说,我想发送关于该主题的“带有符号的主题”。我想使用的符号来自 Segoe UI Emoji 字体。
谢谢!
我有这个查询:
SELECT * FROM table ORDER BY label ASC;
Run Code Online (Sandbox Code Playgroud)
由于标签不是英文的,它们没有按正确的顺序排序(以“ö”开头的标签不在底部/末尾)。
因此,我尝试:
SELECT * FROM table ORDER BY label COLLATE "sv-SE" ASC;
SELECT * FROM table ORDER BY label COLLATE "sv_SE" ASC;
Run Code Online (Sandbox Code Playgroud)
这些给出了关于那些不存在的排序规则的错误,这让我感到困惑。
经过一番搜索,我想出了这样做:
SELECT * FROM pg_collation;
Run Code Online (Sandbox Code Playgroud)
这表明它应该是:
sv-SE-x-icu
Run Code Online (Sandbox Code Playgroud)
当我使用该标识符时它起作用了,但是“-x-icu”的东西有什么用?那是怎么回事?我讨厌他们总是不得不弄乱标准的语言环境标识符,所以你永远不能只依赖标准的“language_location”格式。
postgresql collation unicode international-components-unicode
我的 select case when 语句有问题,我想在 select case when 语句中添加一个新列,我得到了结果,但是?????因为我已将该列设置为阿拉伯语单词,所以我试图转换新列nvarchar(55)不幸的是,我得到了相同的结果。
我怎样才能得到正确的结果?
SELECT case when ( CAST(o.startTime as time(7)) > cast(Start as time(7)))
then cast('????' as nvarchar(55))
else cast('????' as nvarchar(55)) end as stat,
userId, FirstName
from Users, TimeTable
Run Code Online (Sandbox Code Playgroud) 我在每晚触发的 SQL 代理作业中使用 sp_send_dbmail。该作业查询我们的数据库并检查产品价格更新,如果有,它将通过电子邮件作为附件发送给我们的电子商务供应商。他们有一些自动流程,他们会更新我们的电子商务平台,但是他们的自动流程无法处理 sp_send_dbmail 提供的文件。sp_send_dbmail 似乎在结果集中的所有字符之间放置了空字符。
查看在十六进制编辑器中打开 csv 的结果:
通过文本编辑器查看我看到的预期:
sp_send_dbmail 在这里查询:
SET @FileName = 'Update_' + CONVERT(VARCHAR(12),GETDATE),105) '.csv'
SET @Query = 'Some Query'
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'me@domain.com'
@query = @Query
@attach_query_result_as_file = 1
@query_attachment_filename = @FileName
@query_result_separator = ','
@query_result_no_padding = 1
END
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
****编辑补充说明****
使用 Microsoft SQL Server 2008 R2 排序规则为 Latin1_General_CI_AS
离开 no_padding 会在每个返回的字段中留下几个尾随空格。每个空格 (20) 由空值 (00) 分隔
我以非常模糊的方式提出问题,因为我无法用简短的句子解释我的问题是什么。
一般来说,我有一组转换文本和 XML 的过程。里面的程序,我有很多NVARCHAR和XML变量与表XML列。在我的数据中,我有特殊的字母(例如ò)。当我运行所有代码时,特殊字符消失并显示为?- 这意味着我得到了VARCHAR而不是NVARCHAR.
总的来说,我一切都好,直到最后的步骤。我得到了EXEC哪个调用存储过程具有类型为临时构造的变量NVARCHAR。我有一个包含XML字段的表。在这种情况下,我得到了?. 如果我手动运行程序(不在 中EXEC INTO),我会得到正确的符号。
任何想法为什么会发生这种情况?我检查了所有变量,它们是NVARCHAR.
unicode ×12
sql-server ×8
collation ×6
encoding ×3
postgresql ×2
t-sql ×2
case ×1
cast ×1
dynamic-sql ×1
insert ×1
international-components-unicode ×1
plpgsql ×1
scripting ×1
ssis ×1
varchar ×1
xml ×1