Considérez un scénario où vous souhaitez tirer les dernières entrées X d'une table. La colonne que nous voulons contient des témoignages sur un produit. Pour des raisons de performance, nous voulons seulement saisir les 50 premiers caractères du témoignage. La colonne est nommée Testimonialtext et est de type Considérez cet extrait condensé de T-SQL: P> texte code>. SELECT TOP 10
C.FirstName + ' ' + C.LastName AS CustomerName
,LEFT(C.TestimonialText,50) AS TestimonialSnippet
,C.TestimonialDate
FROM Customer AS C
ORDER BY C.TestimonialDate DESC
4 Réponses :
Si vous utilisez SQL Server 2005 ou supérieur, n'utilisez pas de type de données texte, car il est déréqué. Utilisez Varchar (MAX) ou NvarchaRar (Max). Toutes les fonctions de chaîne fonctionneront. En savoir plus ici: http://msdn.microsoft.com/en-us/library /ms178158.aspx P>
Merci Sergey, appréciez la note sur le type de données dédié.
cherchez-vous quelque chose comme ça? Notez le casting (C.EstimonialText comme Varchar (50)) em> strud> dans l'instruction SELECT. mytext Snippet
---------- -------
1234567890 12345
123 123
Je pense que la sous-chaîne serait un meilleur choix. Essayez ceci:
Merci oiseau. Substring Code> est le moyen d'aller si vous ne voulez pas lancer à un varchar code>.
Fondamentalement, ce qui est arrivé, c'est que vous avez fourni un type de données non valide au premier paramètre de la fonction de gauche. Assurez-vous de lancer le type de données de texte comme Varchar ou Nvarchar, puis votre requête fonctionne définitivement. Voici un exemple que j'ai testé dans le SQL Server 2005
Create table #Customer
(
firstName varchar(30)
,lastName varchar(30)
,testimonial text
,testimonialDate DateTime
)
GO
INSERT INTO #Customer (firstName, lastName, testimonial, testimonialDate ) VALUES('Jonhn', 'Smith', 'we really really like your product and blaha ......', getDate())
GO
INSERT INTO #Customer (firstName, lastName, testimonial , testimonialDate) VALUES('Mary', 'Toe', 'we really really like your product and blaha ......', getDate() - 3)
GO
INSERT INTO #Customer (firstName, lastName, testimonial , testimonialDate) VALUES('Amanda', 'Palin', 'we really really like your product and blaha ......', getDate() -2 )
GO
SELECT TOP 3 C.FirstName + ' ' + C.LastName AS CustomerName ,LEFT( CAST(C.Testimonial as varchar(50)),50) AS TestimonialSnippet ,C.TestimonialDate FROM #Customer AS C ORDER BY C.TestimonialDate DESC
GO
Drop table #Customer
GO