2012-01-25 23 views
6

Tengo un simple consulta como en el servidor SQL que no devuelve ningún resultado cuando el personaje principal es el mismo que el primero ...simple como la consulta en SQL Server regresar sin resultado

cuento de la base de datos contiene una fila con el campo 'Apellido' y el valor 'Aalesund'

select * 
from table 
where LastName like 'A%' -- returns no results 

si cambio el campo 'Apellido' contener 'Alesund' la misma consulta exacta devuelve la fila correcta.

¿Alguna idea?

Stig

+1

¿Estás seguro de que no hay un espacio principal en 'Alesund'? –

+1

Dado que eres de Oslo, sospecho que una A divertida, como À, Á, Â, Ä o Å – Andomar

+1

¿No hay un personaje raro como Å http://en.wikipedia.org/wiki/%C3% 85? –

Respuesta

10

En el cotejo de Dinamarca/Noruega de servidor SQL, "aa" se considera un "sinónimo" de A, ya que así es como la carta fue escrita en Dinamarca antes de que los 1940es. Esto también significa que "aa" se considera la última letra del alfabeto al ordenar.

No sé si este comportamiento tiene sentido en un contexto noruego, pero creo que la intercalación se divide en dos en el servidor Sql 2012, quizás eso lo solucione.

ACTUALIZACIÓN: Según Wikipedia, el uso de "Aa" como "Å" en Noruega es similar al uso danés: "Aa" ha sido abolido por las organizaciones oficiales que estandarizan las lenguas durante varias décadas, pero algunas ciudades se niegan para cambiar sus nombres por razones históricas, y "Aa" también sigue siendo común en los apellidos.

En base a esto, diría que al no encontrar "Aalesund" al hacer una búsqueda como "A%" es el comportamiento más correcto en una aplicación localizada en Noruega. Si se abstiene de utilizar la intercalación danesa/noruega para cambiar esto, debe tener en cuenta que cambiará otras propiedades, como la clasificación de letras especiales, como se mencionó anteriormente.

Las muchas colaciones diferentes llamadas Danish_Norwegian _... no te ayudarán AFAIK. Especifican el comportamiento con respecto a la sensibilidad al caso, los acentos, el ancho del carácter y el tipo de kana (este último solo es relevante en japonés, creo). "Å" no se considera una "A" acentuada, sino una letra distinta. Una descripción de las convenciones de nomenclatura para colaciones está en this MSDN article.

ACTUALIZACIÓN 2: Sorprendentemente, parece que la intercalación Norwegian_100_CI_AI hace lo que quiere. Tal vez el uso en Dinamarca y Noruega sea diferente después de todo ...

+0

Sin embargo, algo inexplicable. ¿Por qué 'Aa' hace juego con' A' en 'Alesund' pero no en' A% '? –

+0

Parece que podría ser el problema. ¿Qué clasificación podría cambiar para seguir apoyando a los personajes noruegos? ¿Cuál es la diferencia entre todas las diferentes opciones danés-noruegas? (Este no es mi dominio :)) – Kulvis

+0

@MartinSmith la forma en que leí la pregunta, "A%" coincide con "Alesund", pero no "Aalesund". Como "Aalesund" es realmente "Ålesund", este es el comportamiento que esperaría (como un hablante danés). –

1

Ese nombre se deletrea a veces "Ålesund" El pequeño círculo sobre la A es muy pequeño en algunas fuentes. Puede copiar/pegar inadvertidamente "Ålesund" cuando intente la consulta con el nombre completo. Trate

select * from table where LastName like 'Å%' 
Cuestiones relacionadas