On Tue, 22 Jul 2014, John McKown wrote:

I like to keep the individual lines in my source files relatively
short. Mainly so that I can print them, email them, or display them on
a narrow screen without needing to shift left & right. So, for a
really long character string, such as an SQL query, I do something
like:

query=paste0("select CONVERT(smalldatetime,Int_Start_Date,11) as
Int_Start_Date,",
            " CONVERT(smalldatetime,CASE WHEN Int_Start_Time is NULL
then '00:00' ",
            "else
LEFT(Int_Start_Time,2)+':'+SUBSTRING(Int_Start_Time,3,2) end +",
            "':00', 14) as Int_Start_Time",
            ", Int_duration, RTRIM(INTTYPE) AS INTTYPE,"
            " RTRIM(Int_descr) AS Int_descr",
            ", RTRIM(INTSUBT) as INTSUBT, "
            "INDEXX, RTRIM(Label) AS Label",
            ", RTRIM(CHANGED) AS CHANGED, "
            "RTRIM(ALERT) AS ALERT, "
            "RTRIM(RELEASE) AS RELEASE",
            " FROM CPINTVL where Int_Start_Date BETWEEN '",
            startDateChar,"' and '",endDateChar,"'"
            );

So, just as an opinion, is the above "ugly looking" code compared to
just having a really long line? Also, if you/re curious, when I
started most programs were literally punched onto 80 column cards or
displayed on 80 column screens. I still have some damage from this
time (1970s).

This is out there on the frontier of flame war material, but since your
code is missing a couple of commas that are hard to spot I would say it is rather poorly formatted. My formatting style is not exactly compatible with most pretty-print styles, but simply recognizing that strings can span multiple lines can fix a lot of problems for this particular use case:

query <- paste0( "select CONVERT( smalldatetime
                                , Int_Start_Date
                                , 11
                                ) as Int_Start_Dates
                       , CONVERT( smalldatetime
                                , CASE WHEN Int_Start_Time is NULL
                                       then '00:00'
                                       else LEFT( Int_Start_Time, 2 )
                                          + ':'
                                          + SUBSTRING(Int_Start_Time,3,2)
                                       end
                                  + ':00'
                                , 14
                                ) as Int_Start_Time
                       , Int_duration
                       , RTRIM( INTTYPE ) AS INTTYPE
                       , RTRIM( Int_descr ) AS Int_descr
                       , RTRIM( INTSUBT ) as INTSUBT
                       , INDEXX
                       , RTRIM( Label ) AS Label
                       , RTRIM( CHANGED ) AS CHANGED
                       , RTRIM( ALERT ) AS ALERT
                       , RTRIM( RELEASE ) AS RELEASE
                  FROM CPINTVL
                  where Int_Start_Date BETWEEN '"
               , startDateChar
               , "' and '"
               , endDateChar
               ,"'"
               );

By the way... parameterized queries are safer (no SQL injection) and faster-executing (well, for repeated use) than pasting input text into query text.

Another approach is to store really long strings in data files.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnew...@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to