Solución:
Está declarando la cadena como nvarchar
tipo de datos, en lugar de varchar
Es posible que haya visto código Transact-SQL que pasa cadenas usando un prefijo N. Esto denota que la siguiente cadena está en Unicode (la N en realidad significa juego de caracteres de idioma nacional). Lo que significa que está pasando un valor NCHAR, NVARCHAR o NTEXT, en lugar de CHAR, VARCHAR o TEXT.
Para citar a Microsoft:
Prefije las constantes de cadena de caracteres Unicode con la letra N. Sin el prefijo N, la cadena se convierte a la página de códigos predeterminada de la base de datos. Es posible que esta página de códigos predeterminada no reconozca ciertos caracteres.
Si desea conocer la diferencia entre estos dos tipos de datos, consulte esta publicación de SO:
¿Cuál es la diferencia entre varchar y nvarchar?
Déjame contarte una cosa molesta que pasó con el N'
prefijo: no pude arreglarlo durante dos días.
La intercalación de mi base de datos es SQL_Latin1_General_CP1_CI_AS.
Tiene una tabla con una columna llamada MyCol1. Es un Nvarchar
Esta consulta no coincide con Exact Valor que existe.
SELECT TOP 1 * FROM myTable1 WHERE MyCol1 = 'ESKİ'
// 0 result
el uso del prefijo N ” lo corrige
SELECT TOP 1 * FROM myTable1 WHERE MyCol1 = N'ESKİ'
// 1 result - found!!!!
¿Por qué? Porque latin1_general no tiene gran punteado İ por eso falla, supongo.
1. Rendimiento:
Suponga que su cláusula where es así:
WHERE NAME='JON'
Si la columna NAME es de cualquier tipo que no sea nvarchar o nchar, no debe especificar el prefijo N. Sin embargo, si la columna NAME es de tipo nvarchar o nchar, si no especifica el prefijo N, entonces ‘JON’ se trata como no Unicode. Esto significa que el tipo de datos de la columna NAME y la cadena ‘JON’ son diferentes y, por lo tanto, SQL Server convierte implícitamente el tipo de un operando en el otro. Si SQL Server convierte el tipo de literal al tipo de columna, entonces no hay problema, pero si lo hace al revés, el rendimiento se verá afectado porque no se utilizará el índice de la columna (si está disponible).
2. Juego de caracteres:
Si la columna es de tipo nvarchar o nchar, utilice siempre el prefijo N mientras especifica la cadena de caracteres en la cláusula WHERE criterios / UPDATE / INSERT. Si no hace esto y uno de los caracteres en su cadena es Unicode (como caracteres internacionales – ejemplo – ā) entonces fallará o sufrirá daños en los datos.