I don't remember where I got this script, but it does exactly what you want.
<cfquery name="getsearchinfo" datasource="yourDSN">
INSERT yourSQL HERE
</cfquery>
<!--- Set the number of records to display on each page. --->
<cfset oneachpage = 25>
<!--- Set the default startrow to 1 if a value was not passed. --->
<!--- Determine whether or not to show the previous or next links. --->
<cfparam name = "StartRow" default = "1">
<!--- Set the value of endrow to the maxrows + startrow - 1 --->
<cfset endrow = startrow + oneachpage - 1>
<!--- If the end row is greater than the recordcount, determine how many records are left. --->
<cfif endrow gte getsearchinfo.recordcount>
<cfset endrow = getsearchinfo.recordcount>
<cfset next = false>
<!--- Otherwise, set Next to true and determine the next set of records. --->
<cfelse>
<cfset next = true>
<cfif endrow + oneachpage gt getsearchinfo.recordcount>
<cfset nextnum = getsearchinfo.recordcount - endrow>
<cfelse>
<cfset nextnum = oneachpage>
</cfif>
<cfset nextstart = endrow + 1>
</cfif>
<!--- If StartRow is 1, set Previous to false. --->
<cfif startrow is 1>
<cfset previous = false>
<!--- Othewise, determine the previous set of records. --->
<cfelse>
<cfset previous = true>
<cfset previousstart = startrow - oneachpage>
</cfif>
<!--- Determine how many pages will be displayed. --->
<cfset numpages = ceiling(getsearchinfo.recordcount / oneachpage)>
<cfparam name = "PageNum" default = "1">
<table border="0">
<tr>
<td align="center" valign="middle"> </td>
<td>
<!--- If Previous is true, display the previous link. --->
<cfif previous>
<cfoutput>
<a href ="yourCFML.cfm?StartRow=#PreviousStart#&PageNum=#DecrementValue(PageNum)#"> « Previous</a>
</cfoutput>
<cfelse>
</cfif>
</td>
<cfloop from = "1" to = "#NumPages#" index = "ThisPage">
<cfoutput>
<cfif thispage is pagenum>
<td><b>[#ThisPage#]</b></td>
<cfelse>
<cfset pagenumstart = (((thispage - 1) * oneachpage) + 1)>
<td>
<a href ="yourCFML.cfm?StartRow=#PageNumStart#&PageNum=#ThisPage#"> #ThisPage#</a></td>
</cfif>
</cfoutput>
</cfloop>
<td>
<!--- If Next is true, display the previous link. --->
<cfif next>
<cfoutput>
<a href ="yourCFML.cfm?StartRow=#NextStart#&PageNum=#IncrementValue(PageNum)#"> Next »</a>
</cfoutput>
<cfelse>
</cfif>
</td>
</tr>
</table>