Microsoft KB Archive/98445

= How to Create an Index on Part of a Character Field =

Article ID: 98445

Article Last Modified on 12/3/2003

-

APPLIES TO


 * Microsoft Visual FoxPro 3.0 Standard Edition
 * Microsoft FoxPro 2.0
 * Microsoft FoxPro 2.5b for MS-DOS
 * Microsoft FoxPro 2.5a
 * Microsoft FoxPro 2.5b
 * Microsoft FoxPro 2.5a

-



This article was previously published under Q98445



SUMMARY
If you want to create an index on part of a character field, you can create the index with the SUBSTR function. The following code is used for indexing on the first five characters of a field called NAME: INDEX on SUBSTR(Name,1,5) TAG partnam If the NAME field contains a last name and first name separated by a comma, indexing on the last name can be performed as follows: INDEX on SUBSTR(Name,1,(AT(&quot;,&quot;,Name,1)-1)) TAG lastname However, if the above command is used, FoxPro will create an index tag that does not order the database accordingly. For example, with the NAME field in a five-record database as listed below

Record 1: Brown, John

Record 2: Williams, Mary

Record 3: William, Bob

Record 4: Willis, James

Record 5: Williams, Mark

Record 6: William, Bill

using the INDEX statement above will result in the database being ordered as follows:

Record 1: Brown, John

Record 2: Williams, Mary

Record 3: William, Bob

Record 5: Williams, Mark

Record 6: William, Bill

Record 4: Willis, James

To have the database ordered accordingly, you must use the PADR function to pad the string returned by the SUBSTR function with spaces equal to the length of the field. For example: INDEX on PADR(SUBSTR(Name,1,(AT(&quot;,&quot;,Name,1)-1)),15,&quot; &quot;) TAG partnam For more information, see the &quot;Commands & Functions&quot; manual for FoxPro version 2.0 or the &quot;Language Reference&quot; manual for FoxPro version 2.5.

Additional query words: VFoxWin FoxDos FoxWin string

Keywords: KB98445

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.