Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Inserting special characters (greater/less than or equal symbol) into SQL Server database

I am trying to insert and into a symbol table where the column is of type nvarchar.

Is this possible or are these symbols not allowed in SQL Server?

like image 678
user1610304 Avatar asked Aug 19 '12 17:08

user1610304


People also ask

How do you write greater than or equal to in SQL?

In SQL, you can use the >= operator to test for an expression greater than or equal to.


2 Answers

To make it work, prefix the string with N

create table symboltable 
(
  val nvarchar(10)
)

insert into symboltable values(N'≥') 

select *
from symboltable 

enter image description here

Further Reading:

  • You must precede all Unicode strings with a prefix N when you deal with Unicode string constants in SQL Server
  • Why do some SQL strings have an 'N' prefix?
like image 139
Gonzalo.- Avatar answered Sep 30 '22 10:09

Gonzalo.-


To add to gonzalo's answer, both the string literal and the field need to support unicode characters.

String Literal

Per Marc Gravell's answer on What does N' stands for in a SQL script ?:

'abcd' is a literal for a [var]char string, occupying 4 bytes memory, and using whatever code-page the SQL server is configured for.
N'abcd' is a literal for a n[var]char string, occupying 8 bytes of memory, and using UTF-16.

Where the N prefix stands for "National" Language in the SQL-92 standard and is used for representing unicode characters. For example, in the following code, any unicode characters in the basic string literal are first encoded into SQL Server's "code page":

<code>SELECT '≤' AS ['≤'], N'≤' AS [N'≤']</code>

Aside: You can check your code page with the following SQL:

SELECT DATABASEPROPERTYEX('dbName', 'Collation') AS dbCollation;
SELECT COLLATIONPROPERTY( 'SQL_Latin1_General_CP1_CI_AS' , 'CodePage' ) AS [CodePage];

The default is Windows-1252 which only contains these 256 characters

Field Type

Once the values are capable of being passed, they'll also need to be capable of being stored into a column that supports unicode types, for example:

  • nchar
  • nvarchar
  • ntext

Further Reading:

  • Why do we need to put N before strings in Microsoft SQL Server?
  • What is the meaning of the prefix N in T-SQL statements?
  • You must precede all Unicode strings with a prefix N when you deal with Unicode string constants in SQL Server
  • Why do some SQL strings have an 'N' prefix?
like image 30
KyleMit Avatar answered Sep 30 '22 11:09

KyleMit