Mysql - 插入N' ...'

时间:2015-01-30 14:36:41

标签: mysql

这是一个小小的mysql问题,但我最近发现了一个在阅读SO问题时我不理解的查询。

mysql_query("SET CHARACTER SET utf8");
mysql_query("insert into users (username,pass,fname,lname,phone,city) VALUES (N'$email',N'$pass',N'$fname',N'$lname',N'$phone',N'$city')");

N' ...'是插入查询? 处理UTF8时是否需要这样做?

如果我必须编写相同的查询,我会写:

mysql_query("insert into users (username,pass,fname,lname,phone,city) VALUES ('$email','$pass','$fname','$lname','$phone','$city')");

两者之间有什么区别?

1 个答案:

答案 0 :(得分:0)

NVarchar是用于Unicode的数据类型。如果您的数据库没有存储多语言数据,那么您可以继续使用Varchar。例如:N'abc'(在您的情况下)只是将您的字符串转换为unicode。

默认情况下,SQL Server将Windows-1252字符代码用于varchar。它包含基于拉丁语言的大多数字符(英语,德语,法语等)但它不包含非拉丁语言(波兰语,俄语等)的字符。如上所述,nvarchar用于解决该问题,因为它适用于包含缺少字符的Unicode。这需要付出代价,存储nvarchar的空间是varchar的两倍。

将N放在字符串前面可确保在放入nvarchar列之前将字符转换为Unicode。大部分时间你都可以离开N,但我不推荐它。安全而不是抱歉要好得多。