2010-06-02 7 views
3

J'ai un MS SQL requête qui consiste à sélectionner un champ et il est trancha pour une raison quelconque, il est coupe de texte à 257 caractères.MS SQL/PHP tronquer texte de résultat

Existe-t-il une sorte de coupure par défaut pour récupérer des résultats avec MSSQL et PHP? Je suis sincèrement désemparé de savoir pourquoi cela se produit. Toute orientation serait grandement apprécié

Le type de champ est « char »

Voici une capture d'écran de ma config MS SQL de phpinfo() alt text http://www.aaacoloautosource.com/mssql_config.png

pourrait-il être la valeur mssql.textlimit ou mssql.textsize?

+0

Quel type de champ est-il? –

+0

Le type de champ est "char" –

+0

Quelle est la taille d'un champ char? Est-ce char (255) ou quelque chose? Le nombre 257 est étrangement proche de 256 == 2^8 – barrycarter

Répondre

1

D'une certaine manière, le type de données est "char", qui est apparemment limité à 255 caractères. MAIS le DB stocke plus de 255 caractères.

La conversion du champ en texte fonctionne parfaitement pour une raison quelconque.

SELECT CONVERT(TEXT,fld_name) FROM TABLE_NAME

-1

De l'mysql manual:

La longueur d'une colonne CHAR est fixée à la longueur que vous déclarez lors de la création de la table. La longueur peut être une valeur de 0 à 255.

Dans ma version de MYSQL, je ne peux pas définir un champ char à plus de 255 caractères, selon les spécifications ci-dessus.

Y a-t-il une raison pour laquelle vous devez utiliser char? Essayez d'utiliser du texte ou blob ou varchar à la place.

+0

c'est MS SQL, pas MySQL –

1

Le problème est plus probable que vous utilisez la version du protocole TDS 4.2. Vous devez passer à au moins 7,0 en mettant cela en /etc/freetds.conf:

tds version = 7.0 

Les limitations de la version 4.2 sont les suivantes:

  • ASCII seulement
  • RPC ne sont pas pris en charge.
  • BCP n'est pas pris en charge.
  • Les champs varchar sont limités à 255 caractères. Si votre table définit des champs plus longs, ils seront tronqués.
  • Les requêtes dynamiques (également appelées instructions préparées) ne sont pas prises en charge.

Pour plus de détails, voir http://freetds.schemamania.org/userguide/choosingtdsprotocol.htm

Questions connexes