2017-03-01 68 views
0

嗨,我有问题想切换FirstWordLength的输出到该输出打印每个第一个字的字符量显示的数据集

SELECT InvoiceLineItemDescription, 
LEFT(InvoiceLineItemDescription, 
CASE 
WHEN charindex(' ', InvoiceLineItemDescription) = 0 THEN LEN(InvoiceLineItemDescription) 
ELSE charindex(' ', InvoiceLineItemDescription) - 1 END) 
AS FirstWordLength 
FROM InvoiceLineItems 
ORDER BY FirstWordLength desc; 

应该看的第一个字的长度是这样的:

InvoiceLineItemDescription  FirstWordLength 
citi bank       4 
+3

用您正在使用的数据库标记您的问题。 –

回答

6

可以使用charindex()获得第一字长:

SELECT InvoiceLineItemDescription, 
     CHARINDEX(' ', InvoiceLineItemDescription + ' ') - 1 as FirstWordLength 
FROM InvoiceLineItems 
ORDER BY FirstWordLength desc; 

正如你的问题一样,这里假定只有空格用于分隔单词。您可以使用PATINDEX()来支持更多的分隔符。

代码中的case应该可以工作,但是您使用它来提取第一个单词,而不仅仅是长度。