我有一个varbinary(max)列和nvarchar(max)列的表.其中一个是null,另一个是值.
我想返回具有varbinary(max)列值的列.到目前为止,我已经尝试过这个,但是没有用:
SELECT
A =
CASE A
WHEN NULL THEN B
ELSE A
END
FROM Table
Run Code Online (Sandbox Code Playgroud) 我将一个mysql DB移动到Postgres,但是有些表有一个varbinary(16)字段(用于存储IP地址).
Postgres不支持varbinary字段,经过一些研究,我发现Postgres等价bytea.
所以,我继续将表格bytea作为ip列的字段类型.
现在,我不确定,但这可能会给我带来麻烦.
所以,现在我的问题是,如果bytea与varbinary完全可以等同或不被处理.例如,如果原始MySQL查询是:
INSERT INTO messages(userID, userName, userRole, dateTime, ip, text)
Values('21212111','bot','4',NOW(), inet_pton($ip), 'hi');
Run Code Online (Sandbox Code Playgroud)
注意:我在那里包含了一些php,因为我的日志没有显示插入的ip地址是什么(它是blob/something)
现在,如果它是一个bytea字段,这个查询是否会存储完全相同的数据?我会推测是的,但对于一个select语句也是如此吗?
即会,这个查询无论IP字段是否返回相同的数据varbinary或bytea?
SELECT userID, userName, userRole, channel ,ip FROM table
Run Code Online (Sandbox Code Playgroud)
谢谢你的时间,祝你有个美好的一天.
好吧,问题是需要在2个表上进行合并或连接.一个文件内容存储为[image]类型或varbinary(max),另一个文件内容存储为十六进制字符串.如果我将相同的内容上传到两个表中
字符串(bytearray到string)的内容看起来像这样......
'application/vnd.xfdl;content-encoding="base64-gzip"
H4sIAAAAAAAAC+y9e1fjONI4/H9/Cg173idwFgIJl+5m6MzPJAayE+KsnXQPs8+cHJMY8HZi57ET
aObMh3918UW2Jcdyrmbg7E7HtqpUpSqVSqWSdPHLj/EIPBuOa9rWl51K+WgHGNbAHprW45edpqYc
fPp0+vmgsvNL7cPFb1eNFoDlLffLztN0Ojk/PHx5eSl3Zo4hDx+N8sAeH6Iyh2fl0x1S8Hwwc6f2'
...
Run Code Online (Sandbox Code Playgroud)
图像的内容看起来像(这最终是我希望它看起来像)
0x6170706C69636174696F6E
Run Code Online (Sandbox Code Playgroud)
如果我选择convert(varbinary(MAX), @contentAsString)我得到0x6100700070006C00690063006100740069006F006E
似乎转换是在目标上但在每个之间放置两个零(00),我将其称为缺少更好的单词的字节.
我已尝试在论坛上发布各种更复杂的方法,但无济于事.任何帮助,将不胜感激.
我需要将二进制文件存储在SQL Server 2005上的varbinary(max)列中,如下所示:
FileInfo与FileContent具有一对一的关系.FileText用于在没有要上载的文件时使用,并且仅为项目手动输入文本.我不确定有多少百分比的项目会有二进制文件.
我应该创建第二个表.两个表设计会有任何性能改进吗?有任何合理的好处吗?
我找到了这个页面,但不确定它是否适用于我的情况.
sql-server performance database-design sql-server-2005 varbinary
昨天我问了一个关于如何保存文件的问题.经过一些研究后,我决定将文件存储在数据库中.
我已经检查了使用文件流存储文件和将文件存储在数据库本身之间的区别.
每个都有它的优点和缺点.为了帮助我进行研究,这个网站帮助了我很多:http: //www.codeproject.com/KB/database/SqlFileStream.aspx
所以基本上它说如果文件大于1mb,使用文件流保存文件会更好.
但我发现了文件流的另一个问题.如果删除数据库中的记录,则文件系统上仍存在该文件.
所以我需要你们的意见.用什么?文件流或使用VARBINARY保存数据库中的文件?
Grtz,M.
我是整个LINQ系统的新手,我将密码哈希并存储在我的数据库的varbinary字段中,现在我想从我的数据库中获取该值并将其存储在字节数组中以使用LINQ进行比较.我之前做过这样的事情:
System.Data.SqlTypes.SqlBytes sqlPassBinary = dr.GetSqlBytes(dr.GetOrdinal("Password"));
Run Code Online (Sandbox Code Playgroud)
现在我想尝试应用这个相同的概念,但这次使用LINQ.我尝试了这个,但它不起作用:
public bool Authenticate(string user, string pass)
{
***LINQDataContext d = new ***LINQDataContext();
var login = from us in d.Users
join ur in d.UserRoles on us.UserRoleID equals ur.UserRoleID
where us.Username == user
select us;
if ((login as IEnumerable<object>).Any())
{
System.Web.HttpContext.Current.Session["UserID"] = login.FirstOrDefault().UserID.ToString();
System.Web.HttpContext.Current.Session["UserRole"] = login.FirstOrDefault().UserRole.ToString();
byte[] sqlbinary = (byte[]) login.FirstOrDefault().Password;;
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我得到这个错误:

我正在尝试在 php 中显示 SQL Server 中 varbinary 字段的原始数据。我想准确地返回 SQL Server 中的内容(0x00000 等),但它似乎正在执行某种转换并返回给我类似 )T\xc2\xa1\xc3\xb2a\xc3\xbdC\xc5\xbe\ 的内容xc2\xabV\xc2\xb0\xc3\x98\xe2\x80\x98\xc2\xa9O
\n\n希望这对某人有意义。
\n\n谢谢
\n我在数据库中有一个包含varbinary数据的AttachmentFile列.在c#中,我将它存储在byte []数组中.我需要将此内容作为字符串显示给用户.我尝试了几种不同的方法将这个字节数组转换为字符串,但似乎没有任何效果.
while (rdr.Read())
{
string name = rdr["AttachmentFileName"].ToString();
string mime = rdr["AttachmentMIMEType"].ToString();
byte[] content = (byte[])rdr["AttachmentFile"];
string contentStr = (???)ConvertToString(content);
r.AddHeader("Content-Disposition", "attachment; filename=" + name);
r.ContentType = mime;
r.Write(contentStr);
}
Run Code Online (Sandbox Code Playgroud)
string contentStr = Encoding.Default.GetString(content, 0, 10000);
string contentStr = Encoding.UTF8.GetString(content, 0, 10000);
content = Encoding.Convert(Encoding.GetEncoding("iso-8859-1"), Encoding.UTF8, content);
string contentStr = Encoding.UTF8.GetString(content, 0, 10000);
System.Text.Encoding enc = System.Text.Encoding.ASCII;
string contentStr = enc.GetString(content);
string contentStr = System.Convert.ToBase64String(content);
Run Code Online (Sandbox Code Playgroud)
但是上面没有一个给我一个清晰的字符串.有任何想法吗?
varbinary ×8
sql-server ×4
c# ×2
php ×2
sql ×2
blob ×1
bytearray ×1
encoding ×1
filestream ×1
linq-to-sql ×1
mysql ×1
nvarchar ×1
performance ×1
postgresql ×1
string ×1