System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact a7d3e424a334dfe14887d384ad6ba583c04e1757:


0000: 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50  <!DOCTYPE HTML P
0010: 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 2f 2f 44  UBLIC "-//W3C//D
0020: 54 44 20 48 54 4d 4c 20 34 2e 30 31 2f 2f 45 4e  TD HTML 4.01//EN
0030: 22 20 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33  " "http://www.w3
0040: 2e 6f 72 67 2f 54 52 2f 68 74 6d 6c 34 2f 73 74  .org/TR/html4/st
0050: 72 69 63 74 2e 64 74 64 22 3e 0a 3c 68 74 6d 6c  rict.dtd">.<html
0060: 3e 3c 68 65 61 64 3e 0a 3c 6d 65 74 61 20 68 74  ><head>.<meta ht
0070: 74 70 2d 65 71 75 69 76 3d 22 63 6f 6e 74 65 6e  tp-equiv="conten
0080: 74 2d 74 79 70 65 22 20 63 6f 6e 74 65 6e 74 3d  t-type" content=
0090: 22 74 65 78 74 2f 68 74 6d 6c 3b 20 63 68 61 72  "text/html; char
00a0: 73 65 74 3d 55 54 46 2d 38 22 3e 0a 3c 74 69 74  set=UTF-8">.<tit
00b0: 6c 65 3e 53 51 4c 69 74 65 20 51 75 65 72 79 20  le>SQLite Query 
00c0: 4c 61 6e 67 75 61 67 65 3a 20 43 6f 72 65 20 46  Language: Core F
00d0: 75 6e 63 74 69 6f 6e 73 3c 2f 74 69 74 6c 65 3e  unctions</title>
00e0: 0a 3c 73 74 79 6c 65 20 74 79 70 65 3d 22 74 65  .<style type="te
00f0: 78 74 2f 63 73 73 22 3e 0a 62 6f 64 79 20 7b 0a  xt/css">.body {.
0100: 20 20 20 20 6d 61 72 67 69 6e 3a 20 61 75 74 6f      margin: auto
0110: 3b 0a 20 20 20 20 66 6f 6e 74 2d 66 61 6d 69 6c  ;.    font-famil
0120: 79 3a 20 56 65 72 64 61 6e 61 2c 20 73 61 6e 73  y: Verdana, sans
0130: 2d 73 65 72 69 66 3b 0a 20 20 20 20 70 61 64 64  -serif;.    padd
0140: 69 6e 67 3a 20 38 70 78 20 31 25 3b 0a 7d 0a 0a  ing: 8px 1%;.}..
0150: 61 20 7b 20 63 6f 6c 6f 72 3a 20 23 30 34 34 61  a { color: #044a
0160: 36 34 20 7d 0a 61 3a 76 69 73 69 74 65 64 20 7b  64 }.a:visited {
0170: 20 63 6f 6c 6f 72 3a 20 23 37 33 34 35 35 39 20   color: #734559 
0180: 7d 0a 0a 2e 6c 6f 67 6f 20 7b 20 70 6f 73 69 74  }...logo { posit
0190: 69 6f 6e 3a 61 62 73 6f 6c 75 74 65 3b 20 6d 61  ion:absolute; ma
01a0: 72 67 69 6e 3a 33 70 78 3b 20 7d 0a 2e 74 61 67  rgin:3px; }..tag
01b0: 6c 69 6e 65 20 7b 0a 20 20 66 6c 6f 61 74 3a 72  line {.  float:r
01c0: 69 67 68 74 3b 0a 20 20 74 65 78 74 2d 61 6c 69  ight;.  text-ali
01d0: 67 6e 3a 72 69 67 68 74 3b 0a 20 20 66 6f 6e 74  gn:right;.  font
01e0: 2d 73 74 79 6c 65 3a 69 74 61 6c 69 63 3b 0a 20  -style:italic;. 
01f0: 20 77 69 64 74 68 3a 33 30 30 70 78 3b 0a 20 20   width:300px;.  
0200: 6d 61 72 67 69 6e 3a 31 32 70 78 3b 0a 20 20 6d  margin:12px;.  m
0210: 61 72 67 69 6e 2d 74 6f 70 3a 35 38 70 78 3b 0a  argin-top:58px;.
0220: 7d 0a 0a 2e 6d 65 6e 75 62 61 72 20 7b 0a 20 20  }...menubar {.  
0230: 63 6c 65 61 72 3a 20 62 6f 74 68 3b 0a 20 20 62  clear: both;.  b
0240: 6f 72 64 65 72 2d 72 61 64 69 75 73 3a 20 38 70  order-radius: 8p
0250: 78 3b 0a 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a  x;.  background:
0260: 20 23 30 34 34 61 36 34 3b 0a 20 20 70 61 64 64   #044a64;.  padd
0270: 69 6e 67 3a 20 30 70 78 3b 0a 20 20 6d 61 72 67  ing: 0px;.  marg
0280: 69 6e 3a 20 30 70 78 3b 0a 20 20 63 65 6c 6c 2d  in: 0px;.  cell-
0290: 73 70 61 63 69 6e 67 3a 20 30 70 78 3b 0a 7d 20  spacing: 0px;.} 
02a0: 20 20 20 0a 2e 74 6f 6f 6c 62 61 72 20 7b 0a 20     ..toolbar {. 
02b0: 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20 63 65 6e   text-align: cen
02c0: 74 65 72 3b 0a 20 20 6c 69 6e 65 2d 68 65 69 67  ter;.  line-heig
02d0: 68 74 3a 20 31 2e 36 65 6d 3b 0a 20 20 6d 61 72  ht: 1.6em;.  mar
02e0: 67 69 6e 3a 20 30 3b 0a 20 20 70 61 64 64 69 6e  gin: 0;.  paddin
02f0: 67 3a 20 30 70 78 20 38 70 78 3b 0a 7d 0a 2e 74  g: 0px 8px;.}..t
0300: 6f 6f 6c 62 61 72 20 61 20 7b 20 63 6f 6c 6f 72  oolbar a { color
0310: 3a 20 77 68 69 74 65 3b 20 74 65 78 74 2d 64 65  : white; text-de
0320: 63 6f 72 61 74 69 6f 6e 3a 20 6e 6f 6e 65 3b 20  coration: none; 
0330: 70 61 64 64 69 6e 67 3a 20 36 70 78 20 31 32 70  padding: 6px 12p
0340: 78 3b 20 7d 0a 2e 74 6f 6f 6c 62 61 72 20 61 3a  x; }..toolbar a:
0350: 76 69 73 69 74 65 64 20 7b 20 63 6f 6c 6f 72 3a  visited { color:
0360: 20 77 68 69 74 65 3b 20 7d 0a 2e 74 6f 6f 6c 62   white; }..toolb
0370: 61 72 20 61 3a 68 6f 76 65 72 20 7b 20 63 6f 6c  ar a:hover { col
0380: 6f 72 3a 20 23 30 34 34 61 36 34 3b 20 62 61 63  or: #044a64; bac
0390: 6b 67 72 6f 75 6e 64 3a 20 77 68 69 74 65 3b 20  kground: white; 
03a0: 7d 0a 0a 2e 63 6f 6e 74 65 6e 74 20 20 20 20 7b  }...content    {
03b0: 20 6d 61 72 67 69 6e 3a 20 35 25 3b 20 7d 0a 2e   margin: 5%; }..
03c0: 63 6f 6e 74 65 6e 74 20 64 74 20 7b 20 66 6f 6e  content dt { fon
03d0: 74 2d 77 65 69 67 68 74 3a 62 6f 6c 64 3b 20 7d  t-weight:bold; }
03e0: 0a 2e 63 6f 6e 74 65 6e 74 20 64 64 20 7b 20 6d  ..content dd { m
03f0: 61 72 67 69 6e 2d 62 6f 74 74 6f 6d 3a 20 32 35  argin-bottom: 25
0400: 70 78 3b 20 6d 61 72 67 69 6e 2d 6c 65 66 74 3a  px; margin-left:
0410: 32 30 25 3b 20 7d 0a 2e 63 6f 6e 74 65 6e 74 20  20%; }..content 
0420: 75 6c 20 7b 20 70 61 64 64 69 6e 67 3a 30 70 78  ul { padding:0px
0430: 3b 20 70 61 64 64 69 6e 67 2d 6c 65 66 74 3a 20  ; padding-left: 
0440: 31 35 70 78 3b 20 6d 61 72 67 69 6e 3a 30 70 78  15px; margin:0px
0450: 3b 20 7d 0a 0a 2f 2a 20 54 68 69 6e 67 73 20 66  ; }../* Things f
0460: 6f 72 20 22 66 61 6e 63 79 66 6f 72 6d 61 74 22  or "fancyformat"
0470: 20 64 6f 63 75 6d 65 6e 74 73 20 73 74 61 72 74   documents start
0480: 20 68 65 72 65 2e 20 2a 2f 0a 2e 66 61 6e 63 79   here. */..fancy
0490: 20 69 6d 67 2b 70 20 7b 66 6f 6e 74 2d 73 74 79   img+p {font-sty
04a0: 6c 65 3a 69 74 61 6c 69 63 7d 0a 2e 66 61 6e 63  le:italic}..fanc
04b0: 79 20 2e 63 6f 64 65 62 6c 6f 63 6b 20 69 20 7b  y .codeblock i {
04c0: 20 63 6f 6c 6f 72 3a 20 64 61 72 6b 62 6c 75 65   color: darkblue
04d0: 3b 20 7d 0a 2e 66 61 6e 63 79 20 68 31 2c 2e 66  ; }..fancy h1,.f
04e0: 61 6e 63 79 20 68 32 2c 2e 66 61 6e 63 79 20 68  ancy h2,.fancy h
04f0: 33 2c 2e 66 61 6e 63 79 20 68 34 20 7b 66 6f 6e  3,.fancy h4 {fon
0500: 74 2d 77 65 69 67 68 74 3a 6e 6f 72 6d 61 6c 3b  t-weight:normal;
0510: 63 6f 6c 6f 72 3a 23 30 34 34 61 36 34 7d 0a 2e  color:#044a64}..
0520: 66 61 6e 63 79 20 68 32 20 7b 20 6d 61 72 67 69  fancy h2 { margi
0530: 6e 2d 6c 65 66 74 3a 20 31 30 70 78 20 7d 0a 2e  n-left: 10px }..
0540: 66 61 6e 63 79 20 68 33 20 7b 20 6d 61 72 67 69  fancy h3 { margi
0550: 6e 2d 6c 65 66 74 3a 20 32 30 70 78 20 7d 0a 2e  n-left: 20px }..
0560: 66 61 6e 63 79 20 68 34 20 7b 20 6d 61 72 67 69  fancy h4 { margi
0570: 6e 2d 6c 65 66 74 3a 20 33 30 70 78 20 7d 0a 2e  n-left: 30px }..
0580: 66 61 6e 63 79 20 74 68 20 7b 77 68 69 74 65 2d  fancy th {white-
0590: 73 70 61 63 65 3a 6e 6f 77 72 61 70 3b 74 65 78  space:nowrap;tex
05a0: 74 2d 61 6c 69 67 6e 3a 6c 65 66 74 3b 62 6f 72  t-align:left;bor
05b0: 64 65 72 2d 62 6f 74 74 6f 6d 3a 73 6f 6c 69 64  der-bottom:solid
05c0: 20 31 70 78 20 23 34 34 34 7d 0a 2e 66 61 6e 63   1px #444}..fanc
05d0: 79 20 74 68 2c 20 2e 66 61 6e 63 79 20 74 64 20  y th, .fancy td 
05e0: 7b 70 61 64 64 69 6e 67 3a 20 30 2e 32 65 6d 20  {padding: 0.2em 
05f0: 31 65 78 3b 20 76 65 72 74 69 63 61 6c 2d 61 6c  1ex; vertical-al
0600: 69 67 6e 3a 74 6f 70 7d 0a 2e 66 61 6e 63 79 20  ign:top}..fancy 
0610: 23 74 6f 63 20 61 20 20 20 20 20 20 20 20 7b 20  #toc a        { 
0620: 63 6f 6c 6f 72 3a 20 64 61 72 6b 62 6c 75 65 20  color: darkblue 
0630: 3b 20 74 65 78 74 2d 64 65 63 6f 72 61 74 69 6f  ; text-decoratio
0640: 6e 3a 20 6e 6f 6e 65 20 7d 0a 2e 66 61 6e 63 79  n: none }..fancy
0650: 20 2e 74 6f 64 6f 20 20 20 20 20 20 20 20 20 7b   .todo         {
0660: 20 63 6f 6c 6f 72 3a 20 23 41 41 33 33 33 33 20   color: #AA3333 
0670: 3b 20 66 6f 6e 74 2d 73 74 79 6c 65 20 3a 20 69  ; font-style : i
0680: 74 61 6c 69 63 20 7d 0a 2e 66 61 6e 63 79 20 2e  talic }..fancy .
0690: 74 6f 64 6f 3a 62 65 66 6f 72 65 20 20 7b 20 63  todo:before  { c
06a0: 6f 6e 74 65 6e 74 3a 20 27 54 4f 44 4f 3a 27 20  ontent: 'TODO:' 
06b0: 7d 0a 2e 66 61 6e 63 79 20 70 2e 74 6f 64 6f 20  }..fancy p.todo 
06c0: 20 20 20 20 20 20 20 7b 20 62 6f 72 64 65 72 3a         { border:
06d0: 20 73 6f 6c 69 64 20 23 41 41 33 33 33 33 20 31   solid #AA3333 1
06e0: 70 78 3b 20 70 61 64 64 69 6e 67 3a 20 31 65 78  px; padding: 1ex
06f0: 20 7d 0a 2e 66 61 6e 63 79 20 69 6d 67 20 7b 20   }..fancy img { 
0700: 64 69 73 70 6c 61 79 3a 62 6c 6f 63 6b 3b 20 7d  display:block; }
0710: 0a 2e 66 61 6e 63 79 20 3a 6c 69 6e 6b 3a 68 6f  ..fancy :link:ho
0720: 76 65 72 2c 20 2e 66 61 6e 63 79 20 3a 76 69 73  ver, .fancy :vis
0730: 69 74 65 64 3a 68 6f 76 65 72 20 7b 20 62 61 63  ited:hover { bac
0740: 6b 67 72 6f 75 6e 64 3a 20 77 68 65 61 74 20 7d  kground: wheat }
0750: 0a 2e 66 61 6e 63 79 20 70 2c 2e 66 61 6e 63 79  ..fancy p,.fancy
0760: 20 75 6c 2c 2e 66 61 6e 63 79 20 6f 6c 20 7b 20   ul,.fancy ol { 
0770: 6d 61 72 67 69 6e 3a 20 31 65 6d 20 35 65 78 20  margin: 1em 5ex 
0780: 7d 0a 2e 66 61 6e 63 79 20 6c 69 20 70 20 7b 20  }..fancy li p { 
0790: 6d 61 72 67 69 6e 3a 20 31 65 6d 20 30 20 7d 0a  margin: 1em 0 }.
07a0: 2f 2a 20 45 6e 64 20 6f 66 20 22 66 61 6e 63 79  /* End of "fancy
07b0: 66 6f 72 6d 61 74 22 20 73 70 65 63 69 66 69 63  format" specific
07c0: 20 72 75 6c 65 73 2e 20 2a 2f 0a 0a 3c 2f 73 74   rules. */..</st
07d0: 79 6c 65 3e 0a 20 20 0a 3c 2f 68 65 61 64 3e 0a  yle>.  .</head>.
07e0: 3c 62 6f 64 79 3e 0a 3c 64 69 76 3e 3c 21 2d 2d  <body>.<div><!--
07f0: 20 63 6f 6e 74 61 69 6e 65 72 20 64 69 76 20 74   container div t
0800: 6f 20 73 61 74 69 73 66 79 20 76 61 6c 69 64 61  o satisfy valida
0810: 74 6f 72 20 2d 2d 3e 0a 0a 3c 61 20 68 72 65 66  tor -->..<a href
0820: 3d 22 69 6e 64 65 78 2e 68 74 6d 6c 22 3e 0a 3c  ="index.html">.<
0830: 69 6d 67 20 63 6c 61 73 73 3d 22 6c 6f 67 6f 22  img class="logo"
0840: 20 73 72 63 3d 22 69 6d 61 67 65 73 2f 73 71 6c   src="images/sql
0850: 69 74 65 33 37 30 5f 62 61 6e 6e 65 72 2e 67 69  ite370_banner.gi
0860: 66 22 20 61 6c 74 3d 22 53 51 4c 69 74 65 20 4c  f" alt="SQLite L
0870: 6f 67 6f 22 0a 20 62 6f 72 64 65 72 3d 22 30 22  ogo". border="0"
0880: 3e 3c 2f 61 3e 0a 3c 64 69 76 3e 3c 21 2d 2d 20  ></a>.<div><!-- 
0890: 49 45 20 68 61 63 6b 20 74 6f 20 70 72 65 76 65  IE hack to preve
08a0: 6e 74 20 64 69 73 61 70 70 65 61 72 69 6e 67 20  nt disappearing 
08b0: 6c 6f 67 6f 2d 2d 3e 3c 2f 64 69 76 3e 0a 3c 64  logo--></div>.<d
08c0: 69 76 20 63 6c 61 73 73 3d 22 74 61 67 6c 69 6e  iv class="taglin
08d0: 65 22 3e 53 6d 61 6c 6c 2e 20 46 61 73 74 2e 20  e">Small. Fast. 
08e0: 52 65 6c 69 61 62 6c 65 2e 3c 62 72 3e 43 68 6f  Reliable.<br>Cho
08f0: 6f 73 65 20 61 6e 79 20 74 68 72 65 65 2e 3c 2f  ose any three.</
0900: 64 69 76 3e 0a 0a 3c 74 61 62 6c 65 20 77 69 64  div>..<table wid
0910: 74 68 3d 31 30 30 25 20 63 6c 61 73 73 3d 22 6d  th=100% class="m
0920: 65 6e 75 62 61 72 22 3e 3c 74 72 3e 0a 20 20 3c  enubar"><tr>.  <
0930: 74 64 20 77 69 64 74 68 3d 31 30 30 25 3e 0a 20  td width=100%>. 
0940: 20 3c 64 69 76 20 63 6c 61 73 73 3d 22 74 6f 6f   <div class="too
0950: 6c 62 61 72 22 3e 0a 20 20 20 20 3c 61 20 68 72  lbar">.    <a hr
0960: 65 66 3d 22 61 62 6f 75 74 2e 68 74 6d 6c 22 3e  ef="about.html">
0970: 41 62 6f 75 74 3c 2f 61 3e 0a 20 20 20 20 3c 61  About</a>.    <a
0980: 20 68 72 65 66 3d 22 73 69 74 65 6d 61 70 2e 68   href="sitemap.h
0990: 74 6d 6c 22 3e 53 69 74 65 6d 61 70 3c 2f 61 3e  tml">Sitemap</a>
09a0: 0a 20 20 20 20 3c 61 20 68 72 65 66 3d 22 64 6f  .    <a href="do
09b0: 63 73 2e 68 74 6d 6c 22 3e 44 6f 63 75 6d 65 6e  cs.html">Documen
09c0: 74 61 74 69 6f 6e 3c 2f 61 3e 0a 20 20 20 20 3c  tation</a>.    <
09d0: 61 20 68 72 65 66 3d 22 64 6f 77 6e 6c 6f 61 64  a href="download
09e0: 2e 68 74 6d 6c 22 3e 44 6f 77 6e 6c 6f 61 64 3c  .html">Download<
09f0: 2f 61 3e 0a 20 20 20 20 3c 61 20 68 72 65 66 3d  /a>.    <a href=
0a00: 22 63 6f 70 79 72 69 67 68 74 2e 68 74 6d 6c 22  "copyright.html"
0a10: 3e 4c 69 63 65 6e 73 65 3c 2f 61 3e 0a 20 20 20  >License</a>.   
0a20: 20 3c 61 20 68 72 65 66 3d 22 6e 65 77 73 2e 68   <a href="news.h
0a30: 74 6d 6c 22 3e 4e 65 77 73 3c 2f 61 3e 0a 20 20  tml">News</a>.  
0a40: 20 20 3c 61 20 68 72 65 66 3d 22 73 75 70 70 6f    <a href="suppo
0a50: 72 74 2e 68 74 6d 6c 22 3e 53 75 70 70 6f 72 74  rt.html">Support
0a60: 3c 2f 61 3e 0a 20 20 3c 2f 64 69 76 3e 0a 3c 73  </a>.  </div>.<s
0a70: 63 72 69 70 74 3e 0a 20 20 67 4d 73 67 20 3d 20  cript>.  gMsg = 
0a80: 22 53 65 61 72 63 68 20 53 51 4c 69 74 65 20 44  "Search SQLite D
0a90: 6f 63 73 2e 2e 2e 22 0a 20 20 66 75 6e 63 74 69  ocs...".  functi
0aa0: 6f 6e 20 65 6e 74 65 72 73 65 61 72 63 68 28 29  on entersearch()
0ab0: 20 7b 0a 20 20 20 20 76 61 72 20 71 20 3d 20 64   {.    var q = d
0ac0: 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d 65  ocument.getEleme
0ad0: 6e 74 42 79 49 64 28 22 71 22 29 3b 0a 20 20 20  ntById("q");.   
0ae0: 20 69 66 28 20 71 2e 76 61 6c 75 65 20 3d 3d 20   if( q.value == 
0af0: 67 4d 73 67 20 29 20 7b 20 71 2e 76 61 6c 75 65  gMsg ) { q.value
0b00: 20 3d 20 22 22 20 7d 0a 20 20 20 20 71 2e 73 74   = "" }.    q.st
0b10: 79 6c 65 2e 63 6f 6c 6f 72 20 3d 20 22 62 6c 61  yle.color = "bla
0b20: 63 6b 22 0a 20 20 20 20 71 2e 73 74 79 6c 65 2e  ck".    q.style.
0b30: 66 6f 6e 74 53 74 79 6c 65 20 3d 20 22 6e 6f 72  fontStyle = "nor
0b40: 6d 61 6c 22 0a 20 20 7d 0a 20 20 66 75 6e 63 74  mal".  }.  funct
0b50: 69 6f 6e 20 6c 65 61 76 65 73 65 61 72 63 68 28  ion leavesearch(
0b60: 29 20 7b 0a 20 20 20 20 76 61 72 20 71 20 3d 20  ) {.    var q = 
0b70: 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65 6d  document.getElem
0b80: 65 6e 74 42 79 49 64 28 22 71 22 29 3b 0a 20 20  entById("q");.  
0b90: 20 20 69 66 28 20 71 2e 76 61 6c 75 65 20 3d 3d    if( q.value ==
0ba0: 20 22 22 20 29 20 7b 20 0a 20 20 20 20 20 20 71   "" ) { .      q
0bb0: 2e 76 61 6c 75 65 20 3d 20 67 4d 73 67 0a 20 20  .value = gMsg.  
0bc0: 20 20 20 20 71 2e 73 74 79 6c 65 2e 63 6f 6c 6f      q.style.colo
0bd0: 72 20 3d 20 22 23 30 34 34 61 36 34 22 0a 20 20  r = "#044a64".  
0be0: 20 20 20 20 71 2e 73 74 79 6c 65 2e 66 6f 6e 74      q.style.font
0bf0: 53 74 79 6c 65 20 3d 20 22 69 74 61 6c 69 63 22  Style = "italic"
0c00: 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 66 75 6e  .    }.  }.  fun
0c10: 63 74 69 6f 6e 20 68 69 64 65 6f 72 73 68 6f 77  ction hideorshow
0c20: 28 62 74 6e 2c 6f 62 6a 29 7b 0a 20 20 20 20 76  (btn,obj){.    v
0c30: 61 72 20 78 20 3d 20 64 6f 63 75 6d 65 6e 74 2e  ar x = document.
0c40: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 6f  getElementById(o
0c50: 62 6a 29 3b 0a 20 20 20 20 76 61 72 20 62 20 3d  bj);.    var b =
0c60: 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74 45 6c 65   document.getEle
0c70: 6d 65 6e 74 42 79 49 64 28 62 74 6e 29 3b 0a 20  mentById(btn);. 
0c80: 20 20 20 69 66 28 20 78 2e 73 74 79 6c 65 2e 64     if( x.style.d
0c90: 69 73 70 6c 61 79 21 3d 27 6e 6f 6e 65 27 20 29  isplay!='none' )
0ca0: 7b 0a 20 20 20 20 20 20 78 2e 73 74 79 6c 65 2e  {.      x.style.
0cb0: 64 69 73 70 6c 61 79 20 3d 20 27 6e 6f 6e 65 27  display = 'none'
0cc0: 3b 0a 20 20 20 20 20 20 62 2e 69 6e 6e 65 72 48  ;.      b.innerH
0cd0: 54 4d 4c 3d 27 73 68 6f 77 27 3b 0a 20 20 20 20  TML='show';.    
0ce0: 7d 65 6c 73 65 7b 0a 20 20 20 20 20 20 78 2e 73  }else{.      x.s
0cf0: 74 79 6c 65 2e 64 69 73 70 6c 61 79 20 3d 20 27  tyle.display = '
0d00: 27 3b 0a 20 20 20 20 20 20 62 2e 69 6e 6e 65 72  ';.      b.inner
0d10: 48 54 4d 4c 3d 27 68 69 64 65 27 3b 0a 20 20 20  HTML='hide';.   
0d20: 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 66 61   }.    return fa
0d30: 6c 73 65 3b 0a 20 20 7d 0a 3c 2f 73 63 72 69 70  lse;.  }.</scrip
0d40: 74 3e 0a 3c 74 64 3e 0a 20 20 20 20 3c 64 69 76  t>.<td>.    <div
0d50: 20 73 74 79 6c 65 3d 22 70 61 64 64 69 6e 67 3a   style="padding:
0d60: 30 20 31 65 6d 20 30 70 78 20 30 3b 77 68 69 74  0 1em 0px 0;whit
0d70: 65 2d 73 70 61 63 65 3a 6e 6f 77 72 61 70 22 3e  e-space:nowrap">
0d80: 0a 20 20 20 20 3c 66 6f 72 6d 20 6e 61 6d 65 3d  .    <form name=
0d90: 66 20 6d 65 74 68 6f 64 3d 22 47 45 54 22 20 61  f method="GET" a
0da0: 63 74 69 6f 6e 3d 22 68 74 74 70 73 3a 2f 2f 77  ction="https://w
0db0: 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 73 65  ww.sqlite.org/se
0dc0: 61 72 63 68 22 3e 0a 20 20 20 20 20 20 3c 69 6e  arch">.      <in
0dd0: 70 75 74 20 69 64 3d 71 20 6e 61 6d 65 3d 71 20  put id=q name=q 
0de0: 74 79 70 65 3d 74 65 78 74 0a 20 20 20 20 20 20  type=text.      
0df0: 20 6f 6e 66 6f 63 75 73 3d 22 65 6e 74 65 72 73   onfocus="enters
0e00: 65 61 72 63 68 28 29 22 20 6f 6e 62 6c 75 72 3d  earch()" onblur=
0e10: 22 6c 65 61 76 65 73 65 61 72 63 68 28 29 22 20  "leavesearch()" 
0e20: 73 74 79 6c 65 3d 22 77 69 64 74 68 3a 32 34 65  style="width:24e
0e30: 78 3b 70 61 64 64 69 6e 67 3a 31 70 78 20 31 65  x;padding:1px 1e
0e40: 78 3b 20 62 6f 72 64 65 72 3a 73 6f 6c 69 64 20  x; border:solid 
0e50: 77 68 69 74 65 20 31 70 78 3b 20 66 6f 6e 74 2d  white 1px; font-
0e60: 73 69 7a 65 3a 30 2e 39 65 6d 20 3b 20 66 6f 6e  size:0.9em ; fon
0e70: 74 2d 73 74 79 6c 65 3a 69 74 61 6c 69 63 3b 63  t-style:italic;c
0e80: 6f 6c 6f 72 3a 23 30 34 34 61 36 34 3b 22 20 76  olor:#044a64;" v
0e90: 61 6c 75 65 3d 22 53 65 61 72 63 68 20 53 51 4c  alue="Search SQL
0ea0: 69 74 65 20 44 6f 63 73 2e 2e 2e 22 3e 0a 20 20  ite Docs...">.  
0eb0: 20 20 20 20 3c 69 6e 70 75 74 20 74 79 70 65 3d      <input type=
0ec0: 73 75 62 6d 69 74 20 76 61 6c 75 65 3d 22 47 6f  submit value="Go
0ed0: 22 20 73 74 79 6c 65 3d 22 62 6f 72 64 65 72 3a  " style="border:
0ee0: 73 6f 6c 69 64 20 77 68 69 74 65 20 31 70 78 3b  solid white 1px;
0ef0: 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72  background-color
0f00: 3a 23 30 34 34 61 36 34 3b 63 6f 6c 6f 72 3a 77  :#044a64;color:w
0f10: 68 69 74 65 3b 66 6f 6e 74 2d 73 69 7a 65 3a 30  hite;font-size:0
0f20: 2e 39 65 6d 3b 70 61 64 64 69 6e 67 3a 30 20 31  .9em;padding:0 1
0f30: 65 78 22 3e 0a 20 20 20 20 3c 2f 66 6f 72 6d 3e  ex">.    </form>
0f40: 0a 20 20 20 20 3c 2f 64 69 76 3e 0a 20 20 3c 2f  .    </div>.  </
0f50: 74 61 62 6c 65 3e 0a 0a 3c 64 69 76 20 63 6c 61  table>..<div cla
0f60: 73 73 3d 73 74 61 72 74 73 65 61 72 63 68 3e 3c  ss=startsearch><
0f70: 2f 64 69 76 3e 0a 20 20 0a 3c 68 31 20 61 6c 69  /div>.  .<h1 ali
0f80: 67 6e 3d 22 63 65 6e 74 65 72 22 3e 53 51 4c 20  gn="center">SQL 
0f90: 41 73 20 55 6e 64 65 72 73 74 6f 6f 64 20 42 79  As Understood By
0fa0: 20 53 51 4c 69 74 65 3c 2f 68 31 3e 3c 70 3e 3c   SQLite</h1><p><
0fb0: 61 20 68 72 65 66 3d 22 6c 61 6e 67 2e 68 74 6d  a href="lang.htm
0fc0: 6c 22 3e 5b 54 6f 70 5d 3c 2f 61 3e 3c 2f 70 3e  l">[Top]</a></p>
0fd0: 3c 68 32 3e 43 6f 72 65 20 46 75 6e 63 74 69 6f  <h2>Core Functio
0fe0: 6e 73 3c 2f 68 32 3e 0a 0a 3c 70 3e 54 68 65 20  ns</h2>..<p>The 
0ff0: 63 6f 72 65 20 66 75 6e 63 74 69 6f 6e 73 20 73  core functions s
1000: 68 6f 77 6e 20 62 65 6c 6f 77 20 61 72 65 20 61  hown below are a
1010: 76 61 69 6c 61 62 6c 65 20 62 79 20 64 65 66 61  vailable by defa
1020: 75 6c 74 2e 20 0a 3c 61 20 68 72 65 66 3d 22 6c  ult. .<a href="l
1030: 61 6e 67 5f 64 61 74 65 66 75 6e 63 2e 68 74 6d  ang_datefunc.htm
1040: 6c 22 3e 44 61 74 65 20 26 61 6d 70 3b 20 54 69  l">Date &amp; Ti
1050: 6d 65 20 66 75 6e 63 74 69 6f 6e 73 3c 2f 61 3e  me functions</a>
1060: 20 61 6e 64 0a 3c 61 20 68 72 65 66 3d 22 6c 61   and.<a href="la
1070: 6e 67 5f 61 67 67 66 75 6e 63 2e 68 74 6d 6c 22  ng_aggfunc.html"
1080: 3e 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74  >aggregate funct
1090: 69 6f 6e 73 3c 2f 61 3e 20 61 72 65 20 64 6f 63  ions</a> are doc
10a0: 75 6d 65 6e 74 65 64 20 73 65 70 61 72 61 74 65  umented separate
10b0: 6c 79 2e 20 20 41 6e 0a 61 70 70 6c 69 63 61 74  ly.  An.applicat
10c0: 69 6f 6e 20 6d 61 79 20 64 65 66 69 6e 65 20 61  ion may define a
10d0: 64 64 69 74 69 6f 6e 61 6c 0a 66 75 6e 63 74 69  dditional.functi
10e0: 6f 6e 73 20 77 72 69 74 74 65 6e 20 69 6e 20 43  ons written in C
10f0: 20 61 6e 64 20 61 64 64 65 64 20 74 6f 20 74 68   and added to th
1100: 65 20 64 61 74 61 62 61 73 65 20 65 6e 67 69 6e  e database engin
1110: 65 20 75 73 69 6e 67 0a 74 68 65 20 3c 61 20 68  e using.the <a h
1120: 72 65 66 3d 22 63 33 72 65 66 2f 63 72 65 61 74  ref="c3ref/creat
1130: 65 5f 66 75 6e 63 74 69 6f 6e 2e 68 74 6d 6c 22  e_function.html"
1140: 3e 73 71 6c 69 74 65 33 5f 63 72 65 61 74 65 5f  >sqlite3_create_
1150: 66 75 6e 63 74 69 6f 6e 28 29 3c 2f 61 3e 20 41  function()</a> A
1160: 50 49 2e 3c 2f 70 3e 0a 0a 3c 74 61 62 6c 65 20  PI.</p>..<table 
1170: 62 6f 72 64 65 72 3d 30 20 63 65 6c 6c 70 61 64  border=0 cellpad
1180: 64 69 6e 67 3d 31 30 3e 0a 3c 74 72 3e 3c 74 64  ding=10>.<tr><td
1190: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
11a0: 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74  ign="right" widt
11b0: 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d  h="120"><a name=
11c0: 22 61 62 73 22 3e 3c 2f 61 3e 0a 61 62 73 28 3c  "abs"></a>.abs(<
11d0: 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74 64  i>X</i>)</td><td
11e0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 20   valign="top">. 
11f0: 20 54 68 65 20 61 62 73 28 58 29 20 66 75 6e 63   The abs(X) func
1200: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
1210: 20 61 62 73 6f 6c 75 74 65 20 76 61 6c 75 65 20   absolute value 
1220: 6f 66 20 74 68 65 20 6e 75 6d 65 72 69 63 0a 20  of the numeric. 
1230: 20 61 72 67 75 6d 65 6e 74 20 58 2e 20 20 41 62   argument X.  Ab
1240: 73 28 58 29 20 72 65 74 75 72 6e 73 20 4e 55 4c  s(X) returns NUL
1250: 4c 20 69 66 20 58 20 69 73 20 4e 55 4c 4c 2e 20  L if X is NULL. 
1260: 0a 20 20 41 62 73 28 58 29 20 72 65 74 75 72 6e  .  Abs(X) return
1270: 20 30 2e 30 20 69 66 20 58 20 69 73 20 61 20 73   0.0 if X is a s
1280: 74 72 69 6e 67 20 6f 72 20 62 6c 6f 62 0a 20 20  tring or blob.  
1290: 74 68 61 74 20 63 61 6e 6e 6f 74 20 62 65 20 63  that cannot be c
12a0: 6f 6e 76 65 72 74 65 64 20 74 6f 20 61 20 6e 75  onverted to a nu
12b0: 6d 65 72 69 63 20 76 61 6c 75 65 2e 20 20 49 66  meric value.  If
12c0: 20 58 20 69 73 20 74 68 65 20 0a 20 20 69 6e 74   X is the .  int
12d0: 65 67 65 72 20 2d 39 32 32 33 33 37 32 30 33 36  eger -9223372036
12e0: 38 35 34 37 37 35 38 30 38 20 74 68 65 6e 20 61  854775808 then a
12f0: 62 73 28 58 29 20 74 68 72 6f 77 73 20 61 6e 20  bs(X) throws an 
1300: 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77  integer overflow
1310: 0a 20 20 65 72 72 6f 72 20 73 69 6e 63 65 20 74  .  error since t
1320: 68 65 72 65 20 69 73 20 6e 6f 20 65 71 75 69 76  here is no equiv
1330: 61 6c 65 6e 74 20 70 6f 73 69 74 69 76 65 20 36  alent positive 6
1340: 34 2d 62 69 74 20 74 77 6f 20 63 6f 6d 70 6c 65  4-bit two comple
1350: 6d 65 6e 74 20 76 61 6c 75 65 2e 0a 3c 2f 74 64  ment value..</td
1360: 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61  ></tr><tr><td va
1370: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
1380: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 22  ="right" width="
1390: 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 63 68  120"><a name="ch
13a0: 61 6e 67 65 73 22 3e 3c 2f 61 3e 0a 63 68 61 6e  anges"></a>.chan
13b0: 67 65 73 28 29 3c 2f 74 64 3e 3c 74 64 20 76 61  ges()</td><td va
13c0: 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68  lign="top">.  Th
13d0: 65 20 63 68 61 6e 67 65 73 28 29 20 66 75 6e 63  e changes() func
13e0: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
13f0: 20 6e 75 6d 62 65 72 20 6f 66 20 64 61 74 61 62   number of datab
1400: 61 73 65 20 72 6f 77 73 20 74 68 61 74 20 77 65  ase rows that we
1410: 72 65 20 63 68 61 6e 67 65 64 0a 20 20 6f 72 20  re changed.  or 
1420: 69 6e 73 65 72 74 65 64 20 6f 72 20 64 65 6c 65  inserted or dele
1430: 74 65 64 20 62 79 20 74 68 65 20 6d 6f 73 74 20  ted by the most 
1440: 72 65 63 65 6e 74 6c 79 20 63 6f 6d 70 6c 65 74  recently complet
1450: 65 64 20 49 4e 53 45 52 54 2c 20 44 45 4c 45 54  ed INSERT, DELET
1460: 45 2c 0a 20 20 6f 72 20 55 50 44 41 54 45 20 73  E,.  or UPDATE s
1470: 74 61 74 65 6d 65 6e 74 2c 20 65 78 63 6c 75 73  tatement, exclus
1480: 69 76 65 20 6f 66 20 73 74 61 74 65 6d 65 6e 74  ive of statement
1490: 73 20 69 6e 20 6c 6f 77 65 72 2d 6c 65 76 65 6c  s in lower-level
14a0: 20 74 72 69 67 67 65 72 73 2e 0a 20 20 54 68 65   triggers..  The
14b0: 20 63 68 61 6e 67 65 73 28 29 20 53 51 4c 20 66   changes() SQL f
14c0: 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 77 72 61  unction is a wra
14d0: 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20  pper around the 
14e0: 3c 61 20 68 72 65 66 3d 22 63 33 72 65 66 2f 63  <a href="c3ref/c
14f0: 68 61 6e 67 65 73 2e 68 74 6d 6c 22 3e 73 71 6c  hanges.html">sql
1500: 69 74 65 33 5f 63 68 61 6e 67 65 73 28 29 3c 2f  ite3_changes()</
1510: 61 3e 0a 20 20 43 2f 43 2b 2b 20 66 75 6e 63 74  a>.  C/C++ funct
1520: 69 6f 6e 20 61 6e 64 20 68 65 6e 63 65 20 66 6f  ion and hence fo
1530: 6c 6c 6f 77 73 20 74 68 65 20 73 61 6d 65 20 72  llows the same r
1540: 75 6c 65 73 20 66 6f 72 20 63 6f 75 6e 74 69 6e  ules for countin
1550: 67 20 63 68 61 6e 67 65 73 2e 0a 3c 2f 74 64 3e  g changes..</td>
1560: 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61 6c  </tr><tr><td val
1570: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
1580: 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 22 31  "right" width="1
1590: 32 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 63 68 61  20"><a name="cha
15a0: 72 22 3e 3c 2f 61 3e 0a 63 68 61 72 28 3c 69 3e  r"></a>.char(<i>
15b0: 58 31 3c 2f 69 3e 2c 3c 69 3e 58 32 3c 2f 69 3e  X1</i>,<i>X2</i>
15c0: 2c 2e 2e 2e 2c 3c 69 3e 58 4e 3c 2f 69 3e 29 3c  ,...,<i>XN</i>)<
15d0: 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  /td><td valign="
15e0: 74 6f 70 22 3e 0a 20 20 54 68 65 20 63 68 61 72  top">.  The char
15f0: 28 58 31 2c 58 32 2c 2e 2e 2e 2c 58 4e 29 20 66  (X1,X2,...,XN) f
1600: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
1610: 61 20 73 74 72 69 6e 67 20 63 6f 6d 70 6f 73 65  a string compose
1620: 64 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 20  d of characters 
1630: 68 61 76 69 6e 67 20 74 68 65 0a 20 20 20 75 6e  having the.   un
1640: 69 63 6f 64 65 20 63 6f 64 65 20 70 6f 69 6e 74  icode code point
1650: 20 76 61 6c 75 65 73 20 6f 66 20 69 6e 74 65 67   values of integ
1660: 65 72 73 20 58 31 20 74 68 72 6f 75 67 68 20 58  ers X1 through X
1670: 4e 2c 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e  N, respectively.
1680: 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c  .</td></tr><tr><
1690: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
16a0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
16b0: 64 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d  dth="120"><a nam
16c0: 65 3d 22 63 6f 61 6c 65 73 63 65 22 3e 3c 2f 61  e="coalesce"></a
16d0: 3e 0a 63 6f 61 6c 65 73 63 65 28 3c 69 3e 58 3c  >.coalesce(<i>X<
16e0: 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e 2e 2e  /i>,<i>Y</i>,...
16f0: 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e  )</td><td valign
1700: 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65 20 63 6f  ="top">.  The co
1710: 61 6c 65 73 63 65 28 29 20 66 75 6e 63 74 69 6f  alesce() functio
1720: 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79  n returns a copy
1730: 20 6f 66 20 69 74 73 20 66 69 72 73 74 20 6e 6f   of its first no
1740: 6e 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2c  n-NULL argument,
1750: 20 6f 72 0a 20 20 4e 55 4c 4c 20 69 66 20 61 6c   or.  NULL if al
1760: 6c 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  l arguments are 
1770: 4e 55 4c 4c 2e 20 20 43 6f 61 6c 65 73 63 65 28  NULL.  Coalesce(
1780: 29 20 6d 75 73 74 20 68 61 76 65 20 61 74 20 6c  ) must have at l
1790: 65 61 73 74 20 0a 20 20 32 20 61 72 67 75 6d 65  east .  2 argume
17a0: 6e 74 73 2e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c  nts..</td></tr><
17b0: 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  tr><td valign="t
17c0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
17d0: 22 20 77 69 64 74 68 3d 22 31 32 30 22 3e 3c 61  " width="120"><a
17e0: 20 6e 61 6d 65 3d 22 67 6c 6f 62 22 3e 3c 2f 61   name="glob"></a
17f0: 3e 0a 67 6c 6f 62 28 3c 69 3e 58 3c 2f 69 3e 2c  >.glob(<i>X</i>,
1800: 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74  <i>Y</i>)</td><t
1810: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a  d valign="top">.
1820: 20 20 54 68 65 20 67 6c 6f 62 28 58 2c 59 29 20    The glob(X,Y) 
1830: 66 75 6e 63 74 69 6f 6e 20 69 73 20 65 71 75 69  function is equi
1840: 76 61 6c 65 6e 74 20 74 6f 20 74 68 65 0a 20 20  valent to the.  
1850: 65 78 70 72 65 73 73 69 6f 6e 20 22 3c 62 3e 59  expression "<b>Y
1860: 20 47 4c 4f 42 20 58 3c 2f 62 3e 22 2e 0a 20 20   GLOB X</b>"..  
1870: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 58 20  Note that the X 
1880: 61 6e 64 20 59 20 61 72 67 75 6d 65 6e 74 73 20  and Y arguments 
1890: 61 72 65 20 72 65 76 65 72 73 65 64 20 69 6e 20  are reversed in 
18a0: 74 68 65 20 67 6c 6f 62 28 29 20 66 75 6e 63 74  the glob() funct
18b0: 69 6f 6e 0a 20 20 72 65 6c 61 74 69 76 65 20 74  ion.  relative t
18c0: 6f 20 74 68 65 20 69 6e 66 69 78 20 3c 61 20 68  o the infix <a h
18d0: 72 65 66 3d 22 6c 61 6e 67 5f 65 78 70 72 2e 68  ref="lang_expr.h
18e0: 74 6d 6c 23 67 6c 6f 62 22 3e 47 4c 4f 42 3c 2f  tml#glob">GLOB</
18f0: 61 3e 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 49  a> operator..  I
1900: 66 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 63  f the <a href="c
1910: 33 72 65 66 2f 63 72 65 61 74 65 5f 66 75 6e 63  3ref/create_func
1920: 74 69 6f 6e 2e 68 74 6d 6c 22 3e 73 71 6c 69 74  tion.html">sqlit
1930: 65 33 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  e3_create_functi
1940: 6f 6e 28 29 3c 2f 61 3e 20 69 6e 74 65 72 66 61  on()</a> interfa
1950: 63 65 20 69 73 20 75 73 65 64 20 74 6f 0a 20 20  ce is used to.  
1960: 6f 76 65 72 72 69 64 65 20 74 68 65 20 67 6c 6f  override the glo
1970: 62 28 58 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20  b(X,Y) function 
1980: 77 69 74 68 20 61 6e 20 61 6c 74 65 72 6e 61 74  with an alternat
1990: 69 76 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  ive implementati
19a0: 6f 6e 20 74 68 65 6e 0a 20 20 74 68 65 20 3c 61  on then.  the <a
19b0: 20 68 72 65 66 3d 22 6c 61 6e 67 5f 65 78 70 72   href="lang_expr
19c0: 2e 68 74 6d 6c 23 67 6c 6f 62 22 3e 47 4c 4f 42  .html#glob">GLOB
19d0: 3c 2f 61 3e 20 6f 70 65 72 61 74 6f 72 20 77 69  </a> operator wi
19e0: 6c 6c 20 69 6e 76 6f 6b 65 20 74 68 65 20 61 6c  ll invoke the al
19f0: 74 65 72 6e 61 74 69 76 65 20 69 6d 70 6c 65 6d  ternative implem
1a00: 65 6e 74 61 74 69 6f 6e 2e 0a 3c 2f 74 64 3e 3c  entation..</td><
1a10: 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69  /tr><tr><td vali
1a20: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
1a30: 72 69 67 68 74 22 20 77 69 64 74 68 3d 22 31 32  right" width="12
1a40: 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 69 66 6e 75  0"><a name="ifnu
1a50: 6c 6c 22 3e 3c 2f 61 3e 0a 69 66 6e 75 6c 6c 28  ll"></a>.ifnull(
1a60: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
1a70: 3e 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67  >)</td><td valig
1a80: 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65 20 69  n="top">.  The i
1a90: 66 6e 75 6c 6c 28 29 20 66 75 6e 63 74 69 6f 6e  fnull() function
1aa0: 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79 20   returns a copy 
1ab0: 6f 66 20 69 74 73 20 66 69 72 73 74 20 6e 6f 6e  of its first non
1ac0: 2d 4e 55 4c 4c 20 61 72 67 75 6d 65 6e 74 2c 20  -NULL argument, 
1ad0: 6f 72 0a 20 20 4e 55 4c 4c 20 69 66 20 62 6f 74  or.  NULL if bot
1ae0: 68 20 61 72 67 75 6d 65 6e 74 73 20 61 72 65 20  h arguments are 
1af0: 4e 55 4c 4c 2e 20 20 49 66 6e 75 6c 6c 28 29 20  NULL.  Ifnull() 
1b00: 6d 75 73 74 20 68 61 76 65 20 65 78 61 63 74 6c  must have exactl
1b10: 79 20 32 20 61 72 67 75 6d 65 6e 74 73 2e 0a 20  y 2 arguments.. 
1b20: 20 54 68 65 20 69 66 6e 75 6c 6c 28 29 20 66 75   The ifnull() fu
1b30: 6e 63 74 69 6f 6e 20 69 73 20 65 71 75 69 76 61  nction is equiva
1b40: 6c 65 6e 74 20 74 6f 20 3c 61 20 68 72 65 66 3d  lent to <a href=
1b50: 22 6c 61 6e 67 5f 63 6f 72 65 66 75 6e 63 2e 68  "lang_corefunc.h
1b60: 74 6d 6c 23 63 6f 61 6c 65 73 63 65 22 3e 63 6f  tml#coalesce">co
1b70: 61 6c 65 73 63 65 28 29 3c 2f 61 3e 20 77 69 74  alesce()</a> wit
1b80: 68 20 74 77 6f 20 61 72 67 75 6d 65 6e 74 73 2e  h two arguments.
1b90: 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c  .</td></tr><tr><
1ba0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
1bb0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
1bc0: 64 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d  dth="120"><a nam
1bd0: 65 3d 22 69 6e 73 74 72 22 3e 3c 2f 61 3e 0a 69  e="instr"></a>.i
1be0: 6e 73 74 72 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  nstr(<i>X</i>,<i
1bf0: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74 64 20  >Y</i>)</td><td 
1c00: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20  valign="top">.  
1c10: 54 68 65 20 69 6e 73 74 72 28 58 2c 59 29 20 66  The instr(X,Y) f
1c20: 75 6e 63 74 69 6f 6e 20 66 69 6e 64 73 20 74 68  unction finds th
1c30: 65 20 66 69 72 73 74 20 6f 63 63 75 72 72 65 6e  e first occurren
1c40: 63 65 20 6f 66 20 73 74 72 69 6e 67 20 59 20 77  ce of string Y w
1c50: 69 74 68 69 6e 20 0a 20 20 73 74 72 69 6e 67 20  ithin .  string 
1c60: 58 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68  X and returns th
1c70: 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 72 69 6f  e number of prio
1c80: 72 20 63 68 61 72 61 63 74 65 72 73 20 70 6c 75  r characters plu
1c90: 73 20 31 2c 20 6f 72 20 30 20 69 66 0a 20 20 59  s 1, or 0 if.  Y
1ca0: 20 69 73 20 6e 6f 77 68 65 72 65 20 66 6f 75 6e   is nowhere foun
1cb0: 64 20 77 69 74 68 69 6e 20 58 2e 0a 20 20 4f 72  d within X..  Or
1cc0: 2c 20 69 66 20 58 20 61 6e 64 20 59 20 61 72 65  , if X and Y are
1cd0: 20 62 6f 74 68 20 42 4c 4f 42 73 2c 20 74 68 65   both BLOBs, the
1ce0: 6e 20 69 6e 73 74 72 28 58 2c 59 29 20 72 65 74  n instr(X,Y) ret
1cf0: 75 72 6e 73 20 6f 6e 65 0a 20 20 6d 6f 72 65 20  urns one.  more 
1d00: 74 68 61 6e 20 74 68 65 20 6e 75 6d 62 65 72 20  than the number 
1d10: 62 79 74 65 73 20 70 72 69 6f 72 20 74 6f 20 74  bytes prior to t
1d20: 68 65 20 66 69 72 73 74 20 6f 63 63 75 72 72 65  he first occurre
1d30: 6e 63 65 20 6f 66 20 59 2c 20 6f 72 20 30 20 69  nce of Y, or 0 i
1d40: 66 0a 20 20 59 20 64 6f 65 73 20 6e 6f 74 20 6f  f.  Y does not o
1d50: 63 63 75 72 20 61 6e 79 77 68 65 72 65 20 77 69  ccur anywhere wi
1d60: 74 68 69 6e 20 58 2e 0a 20 20 49 66 20 62 6f 74  thin X..  If bot
1d70: 68 20 61 72 67 75 6d 65 6e 74 73 20 58 20 61 6e  h arguments X an
1d80: 64 20 59 20 74 6f 20 69 6e 73 74 72 28 58 2c 59  d Y to instr(X,Y
1d90: 29 20 61 72 65 20 6e 6f 6e 2d 4e 55 4c 4c 20 61  ) are non-NULL a
1da0: 6e 64 20 61 72 65 20 6e 6f 74 20 42 4c 4f 42 73  nd are not BLOBs
1db0: 0a 20 20 74 68 65 6e 20 62 6f 74 68 20 61 72 65  .  then both are
1dc0: 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 73 20   interpreted as 
1dd0: 73 74 72 69 6e 67 73 2e 0a 20 20 49 66 20 65 69  strings..  If ei
1de0: 74 68 65 72 20 58 20 6f 72 20 59 20 61 72 65 20  ther X or Y are 
1df0: 4e 55 4c 4c 20 69 6e 20 69 6e 73 74 72 28 58 2c  NULL in instr(X,
1e00: 59 29 20 74 68 65 6e 20 74 68 65 20 72 65 73 75  Y) then the resu
1e10: 6c 74 20 69 73 20 4e 55 4c 4c 2e 0a 3c 2f 74 64  lt is NULL..</td
1e20: 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61  ></tr><tr><td va
1e30: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
1e40: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 22  ="right" width="
1e50: 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 68 65  120"><a name="he
1e60: 78 22 3e 3c 2f 61 3e 0a 68 65 78 28 3c 69 3e 58  x"></a>.hex(<i>X
1e70: 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74 64 20 76 61  </i>)</td><td va
1e80: 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68  lign="top">.  Th
1e90: 65 20 68 65 78 28 29 20 66 75 6e 63 74 69 6f 6e  e hex() function
1ea0: 20 69 6e 74 65 72 70 72 65 74 73 20 69 74 73 20   interprets its 
1eb0: 61 72 67 75 6d 65 6e 74 20 61 73 20 61 20 42 4c  argument as a BL
1ec0: 4f 42 20 61 6e 64 20 72 65 74 75 72 6e 73 0a 20  OB and returns. 
1ed0: 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 20   a string which 
1ee0: 69 73 20 74 68 65 20 75 70 70 65 72 2d 63 61 73  is the upper-cas
1ef0: 65 20 68 65 78 61 64 65 63 69 6d 61 6c 20 72 65  e hexadecimal re
1f00: 6e 64 65 72 69 6e 67 20 6f 66 20 74 68 65 20 63  ndering of the c
1f10: 6f 6e 74 65 6e 74 20 6f 66 0a 20 20 74 68 61 74  ontent of.  that
1f20: 20 62 6c 6f 62 2e 0a 3c 2f 74 64 3e 3c 2f 74 72   blob..</td></tr
1f30: 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  ><tr><td valign=
1f40: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
1f50: 68 74 22 20 77 69 64 74 68 3d 22 31 32 30 22 3e  ht" width="120">
1f60: 3c 61 20 6e 61 6d 65 3d 22 6c 61 73 74 5f 69 6e  <a name="last_in
1f70: 73 65 72 74 5f 72 6f 77 69 64 22 3e 3c 2f 61 3e  sert_rowid"></a>
1f80: 0a 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77  .last_insert_row
1f90: 69 64 28 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c  id()</td><td val
1fa0: 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65  ign="top">.  The
1fb0: 20 6c 61 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77   last_insert_row
1fc0: 69 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  id() function re
1fd0: 74 75 72 6e 73 20 74 68 65 20 3c 61 20 68 72 65  turns the <a hre
1fe0: 66 3d 22 6c 61 6e 67 5f 63 72 65 61 74 65 74 61  f="lang_createta
1ff0: 62 6c 65 2e 68 74 6d 6c 23 72 6f 77 69 64 22 3e  ble.html#rowid">
2000: 52 4f 57 49 44 3c 2f 61 3e 0a 20 20 6f 66 20 74  ROWID</a>.  of t
2010: 68 65 20 6c 61 73 74 20 72 6f 77 20 69 6e 73 65  he last row inse
2020: 72 74 20 66 72 6f 6d 20 74 68 65 20 64 61 74 61  rt from the data
2030: 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20  base connection 
2040: 77 68 69 63 68 20 69 6e 76 6f 6b 65 64 20 74 68  which invoked th
2050: 65 0a 20 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20  e.  function..  
2060: 54 68 65 20 6c 61 73 74 5f 69 6e 73 65 72 74 5f  The last_insert_
2070: 72 6f 77 69 64 28 29 20 53 51 4c 20 66 75 6e 63  rowid() SQL func
2080: 74 69 6f 6e 20 69 73 20 61 20 77 72 61 70 70 65  tion is a wrappe
2090: 72 20 61 72 6f 75 6e 64 20 74 68 65 0a 20 20 3c  r around the.  <
20a0: 61 20 68 72 65 66 3d 22 63 33 72 65 66 2f 6c 61  a href="c3ref/la
20b0: 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 2e  st_insert_rowid.
20c0: 68 74 6d 6c 22 3e 73 71 6c 69 74 65 33 5f 6c 61  html">sqlite3_la
20d0: 73 74 5f 69 6e 73 65 72 74 5f 72 6f 77 69 64 28  st_insert_rowid(
20e0: 29 3c 2f 61 3e 20 43 2f 43 2b 2b 20 69 6e 74 65  )</a> C/C++ inte
20f0: 72 66 61 63 65 20 66 75 6e 63 74 69 6f 6e 2e 0a  rface function..
2100: 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74  </td></tr><tr><t
2110: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
2120: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64  lign="right" wid
2130: 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d 65  th="120"><a name
2140: 3d 22 6c 65 6e 67 74 68 22 3e 3c 2f 61 3e 0a 6c  ="length"></a>.l
2150: 65 6e 67 74 68 28 3c 69 3e 58 3c 2f 69 3e 29 3c  ength(<i>X</i>)<
2160: 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  /td><td valign="
2170: 74 6f 70 22 3e 0a 20 20 46 6f 72 20 61 20 73 74  top">.  For a st
2180: 72 69 6e 67 20 76 61 6c 75 65 20 58 2c 20 74 68  ring value X, th
2190: 65 20 6c 65 6e 67 74 68 28 58 29 20 66 75 6e 63  e length(X) func
21a0: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65  tion returns the
21b0: 20 6e 75 6d 62 65 72 20 6f 66 20 0a 20 20 63 68   number of .  ch
21c0: 61 72 61 63 74 65 72 73 20 28 6e 6f 74 20 62 79  aracters (not by
21d0: 74 65 73 29 20 69 6e 20 58 20 70 72 69 6f 72 20  tes) in X prior 
21e0: 74 6f 20 74 68 65 20 66 69 72 73 74 20 4e 55 4c  to the first NUL
21f0: 20 63 68 61 72 61 63 74 65 72 2e 0a 20 20 53 69   character..  Si
2200: 6e 63 65 20 53 51 4c 69 74 65 20 73 74 72 69 6e  nce SQLite strin
2210: 67 73 20 64 6f 20 6e 6f 74 20 6e 6f 72 6d 61 6c  gs do not normal
2220: 6c 79 20 63 6f 6e 74 61 69 6e 20 4e 55 4c 20 63  ly contain NUL c
2230: 68 61 72 61 63 74 65 72 73 2c 20 74 68 65 20 6c  haracters, the l
2240: 65 6e 67 74 68 28 58 29 0a 20 20 66 75 6e 63 74  ength(X).  funct
2250: 69 6f 6e 20 77 69 6c 6c 20 75 73 75 61 6c 6c 79  ion will usually
2260: 20 72 65 74 75 72 6e 20 74 68 65 20 74 6f 74 61   return the tota
2270: 6c 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 72  l number of char
2280: 61 63 74 65 72 73 20 69 6e 20 74 68 65 20 73 74  acters in the st
2290: 72 69 6e 67 20 58 2e 0a 20 20 46 6f 72 20 61 20  ring X..  For a 
22a0: 62 6c 6f 62 20 76 61 6c 75 65 20 58 2c 20 6c 65  blob value X, le
22b0: 6e 67 74 68 28 58 29 20 72 65 74 75 72 6e 73 20  ngth(X) returns 
22c0: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79  the number of by
22d0: 74 65 73 20 69 6e 20 74 68 65 20 62 6c 6f 62 2e  tes in the blob.
22e0: 0a 20 20 49 66 20 58 20 69 73 20 4e 55 4c 4c 20  .  If X is NULL 
22f0: 74 68 65 6e 20 6c 65 6e 67 74 68 28 58 29 20 69  then length(X) i
2300: 73 20 4e 55 4c 4c 2e 0a 20 20 49 66 20 58 20 69  s NULL..  If X i
2310: 73 20 6e 75 6d 65 72 69 63 20 74 68 65 6e 20 6c  s numeric then l
2320: 65 6e 67 74 68 28 58 29 20 72 65 74 75 72 6e 73  ength(X) returns
2330: 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 61   the length of a
2340: 20 73 74 72 69 6e 67 0a 20 20 72 65 70 72 65 73   string.  repres
2350: 65 6e 74 61 74 69 6f 6e 20 6f 66 20 58 2e 0a 3c  entation of X..<
2360: 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64  /td></tr><tr><td
2370: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
2380: 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74  ign="right" widt
2390: 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d  h="120"><a name=
23a0: 22 6c 69 6b 65 22 3e 3c 2f 61 3e 0a 6c 69 6b 65  "like"></a>.like
23b0: 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f  (<i>X</i>,<i>Y</
23c0: 69 3e 29 3c 62 72 20 2f 3e 6c 69 6b 65 28 3c 69  i>)<br />like(<i
23d0: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
23e0: 3c 69 3e 5a 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74  <i>Z</i>)</td><t
23f0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a  d valign="top">.
2400: 20 20 54 68 65 20 6c 69 6b 65 28 29 20 66 75 6e    The like() fun
2410: 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f  ction is used to
2420: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20   implement the. 
2430: 20 22 3c 62 3e 59 20 4c 49 4b 45 20 58 20 26 23   "<b>Y LIKE X &#
2440: 39 31 3b 45 53 43 41 50 45 20 5a 26 23 39 33 3b  91;ESCAPE Z&#93;
2450: 3c 2f 62 3e 22 20 65 78 70 72 65 73 73 69 6f 6e  </b>" expression
2460: 2e 20 0a 20 20 49 66 20 74 68 65 20 6f 70 74 69  . .  If the opti
2470: 6f 6e 61 6c 20 45 53 43 41 50 45 20 63 6c 61 75  onal ESCAPE clau
2480: 73 65 20 69 73 20 70 72 65 73 65 6e 74 2c 20 74  se is present, t
2490: 68 65 6e 20 74 68 65 0a 20 20 6c 69 6b 65 28 29  hen the.  like()
24a0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 69 6e 76   function is inv
24b0: 6f 6b 65 64 20 77 69 74 68 20 74 68 72 65 65 20  oked with three 
24c0: 61 72 67 75 6d 65 6e 74 73 2e 20 20 4f 74 68 65  arguments.  Othe
24d0: 72 77 69 73 65 2c 20 69 74 20 69 73 0a 20 20 69  rwise, it is.  i
24e0: 6e 76 6f 6b 65 64 20 77 69 74 68 20 74 77 6f 20  nvoked with two 
24f0: 61 72 67 75 6d 65 6e 74 73 20 6f 6e 6c 79 2e 20  arguments only. 
2500: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 58 20  Note that the X 
2510: 61 6e 64 20 59 20 70 61 72 61 6d 65 74 65 72 73  and Y parameters
2520: 20 61 72 65 0a 20 20 72 65 76 65 72 73 65 64 20   are.  reversed 
2530: 69 6e 20 74 68 65 20 6c 69 6b 65 28 29 20 66 75  in the like() fu
2540: 6e 63 74 69 6f 6e 20 72 65 6c 61 74 69 76 65 20  nction relative 
2550: 74 6f 20 74 68 65 20 69 6e 66 69 78 20 3c 61 20  to the infix <a 
2560: 68 72 65 66 3d 22 6c 61 6e 67 5f 65 78 70 72 2e  href="lang_expr.
2570: 68 74 6d 6c 23 6c 69 6b 65 22 3e 4c 49 4b 45 3c  html#like">LIKE<
2580: 2f 61 3e 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20  /a> operator..  
2590: 54 68 65 20 3c 61 20 68 72 65 66 3d 22 63 33 72  The <a href="c3r
25a0: 65 66 2f 63 72 65 61 74 65 5f 66 75 6e 63 74 69  ef/create_functi
25b0: 6f 6e 2e 68 74 6d 6c 22 3e 73 71 6c 69 74 65 33  on.html">sqlite3
25c0: 5f 63 72 65 61 74 65 5f 66 75 6e 63 74 69 6f 6e  _create_function
25d0: 28 29 3c 2f 61 3e 20 69 6e 74 65 72 66 61 63 65  ()</a> interface
25e0: 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20   can be used to 
25f0: 6f 76 65 72 72 69 64 65 20 74 68 65 0a 20 20 6c  override the.  l
2600: 69 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 20 61  ike() function a
2610: 6e 64 20 74 68 65 72 65 62 79 20 63 68 61 6e 67  nd thereby chang
2620: 65 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20  e the operation 
2630: 6f 66 20 74 68 65 0a 20 20 3c 61 20 68 72 65 66  of the.  <a href
2640: 3d 22 6c 61 6e 67 5f 65 78 70 72 2e 68 74 6d 6c  ="lang_expr.html
2650: 23 6c 69 6b 65 22 3e 4c 49 4b 45 3c 2f 61 3e 20  #like">LIKE</a> 
2660: 6f 70 65 72 61 74 6f 72 2e 20 20 57 68 65 6e 20  operator.  When 
2670: 6f 76 65 72 72 69 64 69 6e 67 20 74 68 65 20 6c  overriding the l
2680: 69 6b 65 28 29 20 66 75 6e 63 74 69 6f 6e 2c 20  ike() function, 
2690: 69 74 20 6d 61 79 20 62 65 20 69 6d 70 6f 72 74  it may be import
26a0: 61 6e 74 0a 20 20 74 6f 20 6f 76 65 72 72 69 64  ant.  to overrid
26b0: 65 20 62 6f 74 68 20 74 68 65 20 74 77 6f 20 61  e both the two a
26c0: 6e 64 20 74 68 72 65 65 20 61 72 67 75 6d 65 6e  nd three argumen
26d0: 74 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68  t versions of th
26e0: 65 20 6c 69 6b 65 28 29 20 0a 20 20 66 75 6e 63  e like() .  func
26f0: 74 69 6f 6e 2e 20 4f 74 68 65 72 77 69 73 65 2c  tion. Otherwise,
2700: 20 64 69 66 66 65 72 65 6e 74 20 63 6f 64 65 20   different code 
2710: 6d 61 79 20 62 65 20 63 61 6c 6c 65 64 20 74 6f  may be called to
2720: 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 0a 20   implement the. 
2730: 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 65   <a href="lang_e
2740: 78 70 72 2e 68 74 6d 6c 23 6c 69 6b 65 22 3e 4c  xpr.html#like">L
2750: 49 4b 45 3c 2f 61 3e 20 6f 70 65 72 61 74 6f 72  IKE</a> operator
2760: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68   depending on wh
2770: 65 74 68 65 72 20 6f 72 20 6e 6f 74 20 61 6e 20  ether or not an 
2780: 45 53 43 41 50 45 20 63 6c 61 75 73 65 20 77 61  ESCAPE clause wa
2790: 73 20 0a 20 20 73 70 65 63 69 66 69 65 64 2e 0a  s .  specified..
27a0: 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74  </td></tr><tr><t
27b0: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
27c0: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64  lign="right" wid
27d0: 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d 65  th="120"><a name
27e0: 3d 22 6c 69 6b 65 6c 69 68 6f 6f 64 22 3e 3c 2f  ="likelihood"></
27f0: 61 3e 0a 6c 69 6b 65 6c 69 68 6f 6f 64 28 3c 69  a>.likelihood(<i
2800: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29  >X</i>,<i>Y</i>)
2810: 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  </td><td valign=
2820: 22 74 6f 70 22 3e 0a 20 20 54 68 65 20 6c 69 6b  "top">.  The lik
2830: 65 6c 69 68 6f 6f 64 28 58 2c 59 29 20 66 75 6e  elihood(X,Y) fun
2840: 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 72  ction returns ar
2850: 67 75 6d 65 6e 74 20 58 20 75 6e 63 68 61 6e 67  gument X unchang
2860: 65 64 2e 0a 20 20 54 68 65 20 76 61 6c 75 65 20  ed..  The value 
2870: 59 20 69 6e 20 6c 69 6b 65 6c 69 68 6f 6f 64 28  Y in likelihood(
2880: 58 2c 59 29 20 6d 75 73 74 20 62 65 20 61 20 66  X,Y) must be a f
2890: 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 63 6f  loating point co
28a0: 6e 73 74 61 6e 74 0a 20 20 62 65 74 77 65 65 6e  nstant.  between
28b0: 20 30 2e 30 20 61 6e 64 20 31 2e 30 2c 20 69 6e   0.0 and 1.0, in
28c0: 63 6c 75 73 69 76 65 2e 0a 20 20 54 68 65 20 6c  clusive..  The l
28d0: 69 6b 65 6c 69 68 6f 6f 64 28 58 29 20 66 75 6e  ikelihood(X) fun
28e0: 63 74 69 6f 6e 20 69 73 20 61 20 6e 6f 2d 6f 70  ction is a no-op
28f0: 20 74 68 61 74 20 74 68 65 20 63 6f 64 65 20 67   that the code g
2900: 65 6e 65 72 61 74 6f 72 0a 20 20 6f 70 74 69 6d  enerator.  optim
2910: 69 7a 65 73 20 61 77 61 79 20 73 6f 20 74 68 61  izes away so tha
2920: 74 20 69 74 20 63 6f 6e 73 75 6d 65 73 20 6e 6f  t it consumes no
2930: 20 43 50 55 20 63 79 63 6c 65 73 20 64 75 72 69   CPU cycles duri
2940: 6e 67 20 72 75 6e 2d 74 69 6d 65 0a 20 20 28 74  ng run-time.  (t
2950: 68 61 74 20 69 73 2c 20 64 75 72 69 6e 67 20 63  hat is, during c
2960: 61 6c 6c 73 20 74 6f 20 3c 61 20 68 72 65 66 3d  alls to <a href=
2970: 22 63 33 72 65 66 2f 73 74 65 70 2e 68 74 6d 6c  "c3ref/step.html
2980: 22 3e 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29  ">sqlite3_step()
2990: 3c 2f 61 3e 29 2e 0a 20 20 54 68 65 20 70 75 72  </a>)..  The pur
29a0: 70 6f 73 65 20 6f 66 20 74 68 65 20 6c 69 6b 65  pose of the like
29b0: 6c 69 68 6f 6f 64 28 58 2c 59 29 20 66 75 6e 63  lihood(X,Y) func
29c0: 74 69 6f 6e 20 69 73 20 74 6f 20 70 72 6f 76 69  tion is to provi
29d0: 64 65 20 61 20 68 69 6e 74 0a 20 20 74 6f 20 74  de a hint.  to t
29e0: 68 65 20 71 75 65 72 79 20 70 6c 61 6e 6e 65 72  he query planner
29f0: 20 74 68 61 74 20 74 68 65 20 61 72 67 75 6d 65   that the argume
2a00: 6e 74 20 58 20 69 73 20 61 20 62 6f 6f 6c 65 61  nt X is a boolea
2a10: 6e 20 74 68 61 74 20 69 73 0a 20 20 74 72 75 65  n that is.  true
2a20: 20 77 69 74 68 20 61 20 70 72 6f 62 61 62 69 6c   with a probabil
2a30: 69 74 79 20 6f 66 20 61 70 70 72 6f 78 69 6d 61  ity of approxima
2a40: 74 65 6c 79 20 59 2e 0a 20 20 54 68 65 20 3c 61  tely Y..  The <a
2a50: 20 68 72 65 66 3d 22 6c 61 6e 67 5f 63 6f 72 65   href="lang_core
2a60: 66 75 6e 63 2e 68 74 6d 6c 23 75 6e 6c 69 6b 65  func.html#unlike
2a70: 6c 79 22 3e 75 6e 6c 69 6b 65 6c 79 28 58 29 3c  ly">unlikely(X)<
2a80: 2f 61 3e 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  /a> function is 
2a90: 73 68 6f 72 74 2d 68 61 6e 64 20 66 6f 72 20 6c  short-hand for l
2aa0: 69 6b 65 6c 69 68 6f 6f 64 28 58 2c 30 2e 30 36  ikelihood(X,0.06
2ab0: 32 35 29 2e 0a 20 20 54 68 65 20 3c 61 20 68 72  25)..  The <a hr
2ac0: 65 66 3d 22 6c 61 6e 67 5f 63 6f 72 65 66 75 6e  ef="lang_corefun
2ad0: 63 2e 68 74 6d 6c 23 6c 69 6b 65 6c 79 22 3e 6c  c.html#likely">l
2ae0: 69 6b 65 6c 79 28 58 29 3c 2f 61 3e 20 66 75 6e  ikely(X)</a> fun
2af0: 63 74 69 6f 6e 20 69 73 20 73 68 6f 72 74 2d 68  ction is short-h
2b00: 61 6e 64 20 66 6f 72 20 6c 69 6b 65 6c 69 68 6f  and for likeliho
2b10: 6f 64 28 58 2c 30 2e 39 33 37 35 29 2e 0a 3c 2f  od(X,0.9375)..</
2b20: 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64 20  td></tr><tr><td 
2b30: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69  valign="top" ali
2b40: 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68  gn="right" width
2b50: 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d 22  ="120"><a name="
2b60: 6c 69 6b 65 6c 79 22 3e 3c 2f 61 3e 0a 6c 69 6b  likely"></a>.lik
2b70: 65 6c 79 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  ely(<i>X</i>)</t
2b80: 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  d><td valign="to
2b90: 70 22 3e 0a 20 20 54 68 65 20 6c 69 6b 65 6c 79  p">.  The likely
2ba0: 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  (X) function ret
2bb0: 75 72 6e 73 20 74 68 65 20 61 72 67 75 6d 65 6e  urns the argumen
2bc0: 74 20 58 20 75 6e 63 68 61 6e 67 65 64 2e 0a 20  t X unchanged.. 
2bd0: 20 54 68 65 20 6c 69 6b 65 6c 79 28 58 29 20 66   The likely(X) f
2be0: 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 6e 6f 2d  unction is a no-
2bf0: 6f 70 20 74 68 61 74 20 74 68 65 20 63 6f 64 65  op that the code
2c00: 20 67 65 6e 65 72 61 74 6f 72 0a 20 20 6f 70 74   generator.  opt
2c10: 69 6d 69 7a 65 73 20 61 77 61 79 20 73 6f 20 74  imizes away so t
2c20: 68 61 74 20 69 74 20 63 6f 6e 73 75 6d 65 73 20  hat it consumes 
2c30: 6e 6f 20 43 50 55 20 63 79 63 6c 65 73 20 61 74  no CPU cycles at
2c40: 0a 20 20 72 75 6e 2d 74 69 6d 65 20 28 74 68 61  .  run-time (tha
2c50: 74 20 69 73 2c 20 64 75 72 69 6e 67 20 63 61 6c  t is, during cal
2c60: 6c 73 20 74 6f 20 3c 61 20 68 72 65 66 3d 22 63  ls to <a href="c
2c70: 33 72 65 66 2f 73 74 65 70 2e 68 74 6d 6c 22 3e  3ref/step.html">
2c80: 73 71 6c 69 74 65 33 5f 73 74 65 70 28 29 3c 2f  sqlite3_step()</
2c90: 61 3e 29 2e 0a 20 20 54 68 65 20 70 75 72 70 6f  a>)..  The purpo
2ca0: 73 65 20 6f 66 20 74 68 65 20 6c 69 6b 65 6c 79  se of the likely
2cb0: 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  (X) function is 
2cc0: 74 6f 20 70 72 6f 76 69 64 65 20 61 20 68 69 6e  to provide a hin
2cd0: 74 0a 20 20 74 6f 20 74 68 65 20 71 75 65 72 79  t.  to the query
2ce0: 20 70 6c 61 6e 6e 65 72 20 74 68 61 74 20 74 68   planner that th
2cf0: 65 20 61 72 67 75 6d 65 6e 74 20 58 20 69 73 20  e argument X is 
2d00: 61 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 0a  a boolean value.
2d10: 20 20 74 68 61 74 20 69 73 20 75 73 75 61 6c 6c    that is usuall
2d20: 79 20 74 72 75 65 2e 20 54 68 65 20 6c 69 6b 65  y true. The like
2d30: 6c 79 28 58 29 20 66 75 6e 63 74 69 6f 6e 20 69  ly(X) function i
2d40: 73 20 65 71 75 69 76 61 6c 65 6e 74 0a 20 20 74  s equivalent.  t
2d50: 6f 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f  o <a href="lang_
2d60: 63 6f 72 65 66 75 6e 63 2e 68 74 6d 6c 23 6c 69  corefunc.html#li
2d70: 6b 65 6c 69 68 6f 6f 64 22 3e 6c 69 6b 65 6c 69  kelihood">likeli
2d80: 68 6f 6f 64 3c 2f 61 3e 28 58 2c 30 2e 39 33 37  hood</a>(X,0.937
2d90: 35 29 2e 20 53 65 65 20 61 6c 73 6f 3a 20 3c 61  5). See also: <a
2da0: 20 68 72 65 66 3d 22 6c 61 6e 67 5f 63 6f 72 65   href="lang_core
2db0: 66 75 6e 63 2e 68 74 6d 6c 23 75 6e 6c 69 6b 65  func.html#unlike
2dc0: 6c 79 22 3e 75 6e 6c 69 6b 65 6c 79 28 58 29 3c  ly">unlikely(X)<
2dd0: 2f 61 3e 2e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c  /a>..</td></tr><
2de0: 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  tr><td valign="t
2df0: 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68 74  op" align="right
2e00: 22 20 77 69 64 74 68 3d 22 31 32 30 22 3e 3c 61  " width="120"><a
2e10: 20 6e 61 6d 65 3d 22 6c 6f 61 64 5f 65 78 74 65   name="load_exte
2e20: 6e 73 69 6f 6e 22 3e 3c 2f 61 3e 0a 6c 6f 61 64  nsion"></a>.load
2e30: 5f 65 78 74 65 6e 73 69 6f 6e 28 3c 69 3e 58 3c  _extension(<i>X<
2e40: 2f 69 3e 29 3c 62 72 20 2f 3e 6c 6f 61 64 5f 65  /i>)<br />load_e
2e50: 78 74 65 6e 73 69 6f 6e 28 3c 69 3e 58 3c 2f 69  xtension(<i>X</i
2e60: 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e  >,<i>Y</i>)</td>
2e70: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
2e80: 3e 0a 20 20 54 68 65 20 6c 6f 61 64 5f 65 78 74  >.  The load_ext
2e90: 65 6e 73 69 6f 6e 28 58 2c 59 29 20 66 75 6e 63  ension(X,Y) func
2ea0: 74 69 6f 6e 20 6c 6f 61 64 73 20 3c 61 20 68 72  tion loads <a hr
2eb0: 65 66 3d 22 6c 6f 61 64 65 78 74 2e 68 74 6d 6c  ef="loadext.html
2ec0: 22 3e 53 51 4c 69 74 65 20 65 78 74 65 6e 73 69  ">SQLite extensi
2ed0: 6f 6e 73 3c 2f 61 3e 20 6f 75 74 20 6f 66 20 74  ons</a> out of t
2ee0: 68 65 20 73 68 61 72 65 64 0a 20 20 6c 69 62 72  he shared.  libr
2ef0: 61 72 79 20 66 69 6c 65 20 6e 61 6d 65 64 20 58  ary file named X
2f00: 20 75 73 69 6e 67 20 74 68 65 20 65 6e 74 72 79   using the entry
2f10: 20 70 6f 69 6e 74 20 59 2e 20 20 54 68 65 20 72   point Y.  The r
2f20: 65 73 75 6c 74 20 6f 66 20 6c 6f 61 64 5f 65 78  esult of load_ex
2f30: 74 65 6e 73 69 6f 6e 28 29 0a 20 20 69 73 20 61  tension().  is a
2f40: 6c 77 61 79 73 20 61 20 4e 55 4c 4c 2e 20 20 49  lways a NULL.  I
2f50: 66 20 59 20 69 73 20 6f 6d 69 74 74 65 64 20 74  f Y is omitted t
2f60: 68 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20  hen the default 
2f70: 65 6e 74 72 79 20 70 6f 69 6e 74 20 6e 61 6d 65  entry point name
2f80: 20 69 73 20 75 73 65 64 2e 0a 20 20 54 68 65 20   is used..  The 
2f90: 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e 28 29  load_extension()
2fa0: 20 66 75 6e 63 74 69 6f 6e 20 72 61 69 73 65 73   function raises
2fb0: 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66   an exception if
2fc0: 20 74 68 65 20 65 78 74 65 6e 73 69 6f 6e 20 66   the extension f
2fd0: 61 69 6c 73 20 74 6f 0a 20 20 6c 6f 61 64 20 6f  ails to.  load o
2fe0: 72 20 69 6e 69 74 69 61 6c 69 7a 65 20 63 6f 72  r initialize cor
2ff0: 72 65 63 74 6c 79 2e 0a 0a 20 20 3c 70 3e 54 68  rectly...  <p>Th
3000: 65 20 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  e load_extension
3010: 28 29 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c  () function will
3020: 20 66 61 69 6c 20 69 66 20 74 68 65 20 65 78 74   fail if the ext
3030: 65 6e 73 69 6f 6e 20 61 74 74 65 6d 70 74 73 20  ension attempts 
3040: 74 6f 20 0a 20 20 6d 6f 64 69 66 79 20 6f 72 20  to .  modify or 
3050: 64 65 6c 65 74 65 20 61 6e 20 53 51 4c 20 66 75  delete an SQL fu
3060: 6e 63 74 69 6f 6e 20 6f 72 20 63 6f 6c 6c 61 74  nction or collat
3070: 69 6e 67 20 73 65 71 75 65 6e 63 65 2e 20 20 54  ing sequence.  T
3080: 68 65 0a 20 20 65 78 74 65 6e 73 69 6f 6e 20 63  he.  extension c
3090: 61 6e 20 61 64 64 20 6e 65 77 20 66 75 6e 63 74  an add new funct
30a0: 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69 6e  ions or collatin
30b0: 67 20 73 65 71 75 65 6e 63 65 73 2c 20 62 75 74  g sequences, but
30c0: 20 63 61 6e 6e 6f 74 0a 20 20 6d 6f 64 69 66 79   cannot.  modify
30d0: 20 6f 72 20 64 65 6c 65 74 65 20 65 78 69 73 74   or delete exist
30e0: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 6f 72  ing functions or
30f0: 20 63 6f 6c 6c 61 74 69 6e 67 20 73 65 71 75 65   collating seque
3100: 6e 63 65 73 20 62 65 63 61 75 73 65 0a 20 20 74  nces because.  t
3110: 68 6f 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 61  hose functions a
3120: 6e 64 2f 6f 72 20 63 6f 6c 6c 61 74 69 6e 67 20  nd/or collating 
3130: 73 65 71 75 65 6e 63 65 73 20 6d 69 67 68 74 20  sequences might 
3140: 62 65 20 75 73 65 64 20 65 6c 73 65 77 68 65 72  be used elsewher
3150: 65 0a 20 20 69 6e 20 74 68 65 20 63 75 72 72 65  e.  in the curre
3160: 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20 53 51 4c  ntly running SQL
3170: 20 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 6f 20   statement.  To 
3180: 6c 6f 61 64 20 61 6e 20 65 78 74 65 6e 73 69 6f  load an extensio
3190: 6e 20 74 68 61 74 0a 20 20 63 68 61 6e 67 65 73  n that.  changes
31a0: 20 6f 72 20 64 65 6c 65 74 65 73 20 66 75 6e 63   or deletes func
31b0: 74 69 6f 6e 73 20 6f 72 20 63 6f 6c 6c 61 74 69  tions or collati
31c0: 6e 67 20 73 65 71 75 65 6e 63 65 73 2c 20 75 73  ng sequences, us
31d0: 65 20 74 68 65 0a 20 20 3c 61 20 68 72 65 66 3d  e the.  <a href=
31e0: 22 63 33 72 65 66 2f 6c 6f 61 64 5f 65 78 74 65  "c3ref/load_exte
31f0: 6e 73 69 6f 6e 2e 68 74 6d 6c 22 3e 73 71 6c 69  nsion.html">sqli
3200: 74 65 33 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69  te3_load_extensi
3210: 6f 6e 28 29 3c 2f 61 3e 20 43 2d 6c 61 6e 67 75  on()</a> C-langu
3220: 61 67 65 20 41 50 49 2e 3c 2f 70 3e 0a 0a 20 20  age API.</p>..  
3230: 3c 70 3e 46 6f 72 20 73 65 63 75 72 69 74 79 20  <p>For security 
3240: 72 65 61 73 6f 6e 73 2c 20 65 78 74 65 6e 73 69  reasons, extensi
3250: 6f 6e 20 6c 6f 61 64 65 64 20 69 73 20 74 75 72  on loaded is tur
3260: 6e 65 64 20 6f 66 66 20 62 79 20 64 65 66 61 75  ned off by defau
3270: 6c 74 20 61 6e 64 20 6d 75 73 74 0a 20 20 62 65  lt and must.  be
3280: 20 65 6e 61 62 6c 65 64 20 62 79 20 61 20 70 72   enabled by a pr
3290: 69 6f 72 20 63 61 6c 6c 20 74 6f 20 3c 61 20 68  ior call to <a h
32a0: 72 65 66 3d 22 63 33 72 65 66 2f 65 6e 61 62 6c  ref="c3ref/enabl
32b0: 65 5f 6c 6f 61 64 5f 65 78 74 65 6e 73 69 6f 6e  e_load_extension
32c0: 2e 68 74 6d 6c 22 3e 73 71 6c 69 74 65 33 5f 65  .html">sqlite3_e
32d0: 6e 61 62 6c 65 5f 6c 6f 61 64 5f 65 78 74 65 6e  nable_load_exten
32e0: 73 69 6f 6e 28 29 3c 2f 61 3e 2e 3c 2f 70 3e 0a  sion()</a>.</p>.
32f0: 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74  </td></tr><tr><t
3300: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61  d valign="top" a
3310: 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64  lign="right" wid
3320: 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d 65  th="120"><a name
3330: 3d 22 6c 6f 77 65 72 22 3e 3c 2f 61 3e 0a 6c 6f  ="lower"></a>.lo
3340: 77 65 72 28 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74  wer(<i>X</i>)</t
3350: 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  d><td valign="to
3360: 70 22 3e 0a 20 20 54 68 65 20 6c 6f 77 65 72 28  p">.  The lower(
3370: 58 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  X) function retu
3380: 72 6e 73 20 61 20 63 6f 70 79 20 6f 66 20 73 74  rns a copy of st
3390: 72 69 6e 67 20 58 20 77 69 74 68 20 61 6c 6c 20  ring X with all 
33a0: 41 53 43 49 49 20 63 68 61 72 61 63 74 65 72 73  ASCII characters
33b0: 0a 20 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  .  converted to 
33c0: 6c 6f 77 65 72 20 63 61 73 65 2e 20 20 54 68 65  lower case.  The
33d0: 20 64 65 66 61 75 6c 74 20 62 75 69 6c 74 2d 69   default built-i
33e0: 6e 20 6c 6f 77 65 72 28 29 20 66 75 6e 63 74 69  n lower() functi
33f0: 6f 6e 20 77 6f 72 6b 73 0a 20 20 66 6f 72 20 41  on works.  for A
3400: 53 43 49 49 20 63 68 61 72 61 63 74 65 72 73 20  SCII characters 
3410: 6f 6e 6c 79 2e 20 20 54 6f 20 64 6f 20 63 61 73  only.  To do cas
3420: 65 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 6f 6e  e conversions on
3430: 20 6e 6f 6e 2d 41 53 43 49 49 0a 20 20 63 68 61   non-ASCII.  cha
3440: 72 61 63 74 65 72 73 2c 20 6c 6f 61 64 20 74 68  racters, load th
3450: 65 20 49 43 55 20 65 78 74 65 6e 73 69 6f 6e 2e  e ICU extension.
3460: 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c  .</td></tr><tr><
3470: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
3480: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
3490: 64 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d  dth="120"><a nam
34a0: 65 3d 22 6c 74 72 69 6d 22 3e 3c 2f 61 3e 0a 6c  e="ltrim"></a>.l
34b0: 74 72 69 6d 28 3c 69 3e 58 3c 2f 69 3e 29 3c 62  trim(<i>X</i>)<b
34c0: 72 20 2f 3e 6c 74 72 69 6d 28 3c 69 3e 58 3c 2f  r />ltrim(<i>X</
34d0: 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64  i>,<i>Y</i>)</td
34e0: 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ><td valign="top
34f0: 22 3e 0a 20 20 54 68 65 20 6c 74 72 69 6d 28 58  ">.  The ltrim(X
3500: 2c 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  ,Y) function ret
3510: 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 66 6f  urns a string fo
3520: 72 6d 65 64 20 62 79 20 72 65 6d 6f 76 69 6e 67  rmed by removing
3530: 20 61 6e 79 20 61 6e 64 20 61 6c 6c 0a 20 20 63   any and all.  c
3540: 68 61 72 61 63 74 65 72 73 20 74 68 61 74 20 61  haracters that a
3550: 70 70 65 61 72 20 69 6e 20 59 20 66 72 6f 6d 20  ppear in Y from 
3560: 74 68 65 20 6c 65 66 74 20 73 69 64 65 20 6f 66  the left side of
3570: 20 58 2e 0a 20 20 49 66 20 74 68 65 20 59 20 61   X..  If the Y a
3580: 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74  rgument is omitt
3590: 65 64 2c 20 6c 74 72 69 6d 28 58 29 20 72 65 6d  ed, ltrim(X) rem
35a0: 6f 76 65 73 20 73 70 61 63 65 73 20 66 72 6f 6d  oves spaces from
35b0: 20 74 68 65 20 6c 65 66 74 20 73 69 64 65 0a 20   the left side. 
35c0: 20 6f 66 20 58 2e 0a 3c 2f 74 64 3e 3c 2f 74 72   of X..</td></tr
35d0: 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  ><tr><td valign=
35e0: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
35f0: 68 74 22 20 77 69 64 74 68 3d 22 31 32 30 22 3e  ht" width="120">
3600: 3c 61 20 6e 61 6d 65 3d 22 6d 61 78 6f 72 65 75  <a name="maxoreu
3610: 6e 63 22 3e 3c 2f 61 3e 0a 6d 61 78 28 3c 69 3e  nc"></a>.max(<i>
3620: 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c 2e  X</i>,<i>Y</i>,.
3630: 2e 2e 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69  ..)</td><td vali
3640: 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65 20  gn="top">.  The 
3650: 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74 20 6d  multi-argument m
3660: 61 78 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  ax() function re
3670: 74 75 72 6e 73 20 74 68 65 20 61 72 67 75 6d 65  turns the argume
3680: 6e 74 20 77 69 74 68 20 74 68 65 20 0a 20 20 6d  nt with the .  m
3690: 61 78 69 6d 75 6d 20 76 61 6c 75 65 2c 20 6f 72  aximum value, or
36a0: 20 72 65 74 75 72 6e 20 4e 55 4c 4c 20 69 66 20   return NULL if 
36b0: 61 6e 79 20 61 72 67 75 6d 65 6e 74 20 69 73 20  any argument is 
36c0: 4e 55 4c 4c 2e 20 0a 20 20 54 68 65 20 6d 75 6c  NULL. .  The mul
36d0: 74 69 2d 61 72 67 75 6d 65 6e 74 20 6d 61 78 28  ti-argument max(
36e0: 29 20 66 75 6e 63 74 69 6f 6e 20 73 65 61 72 63  ) function searc
36f0: 68 65 73 20 69 74 73 20 61 72 67 75 6d 65 6e 74  hes its argument
3700: 73 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20 72  s from left to r
3710: 69 67 68 74 0a 20 20 66 6f 72 20 61 6e 20 61 72  ight.  for an ar
3720: 67 75 6d 65 6e 74 20 74 68 61 74 20 64 65 66 69  gument that defi
3730: 6e 65 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20  nes a collating 
3740: 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 75 73 65  function and use
3750: 73 20 74 68 61 74 20 63 6f 6c 6c 61 74 69 6e 67  s that collating
3760: 0a 20 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20  .  function for 
3770: 61 6c 6c 20 73 74 72 69 6e 67 20 63 6f 6d 70 61  all string compa
3780: 72 69 73 6f 6e 73 2e 20 20 49 66 20 6e 6f 6e 65  risons.  If none
3790: 20 6f 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74   of the argument
37a0: 73 20 74 6f 20 6d 61 78 28 29 0a 20 20 64 65 66  s to max().  def
37b0: 69 6e 65 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20  ine a collating 
37c0: 66 75 6e 63 74 69 6f 6e 2c 20 74 68 65 6e 20 74  function, then t
37d0: 68 65 20 42 49 4e 41 52 59 20 63 6f 6c 6c 61 74  he BINARY collat
37e0: 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  ing function is 
37f0: 75 73 65 64 2e 0a 20 20 4e 6f 74 65 20 74 68 61  used..  Note tha
3800: 74 20 3c 62 3e 6d 61 78 28 29 3c 2f 62 3e 20 69  t <b>max()</b> i
3810: 73 20 61 20 73 69 6d 70 6c 65 20 66 75 6e 63 74  s a simple funct
3820: 69 6f 6e 20 77 68 65 6e 0a 20 20 69 74 20 68 61  ion when.  it ha
3830: 73 20 32 20 6f 72 20 6d 6f 72 65 20 61 72 67 75  s 2 or more argu
3840: 6d 65 6e 74 73 20 62 75 74 20 6f 70 65 72 61 74  ments but operat
3850: 65 73 20 61 73 20 61 6e 0a 20 20 3c 61 20 68 72  es as an.  <a hr
3860: 65 66 3d 22 6c 61 6e 67 5f 61 67 67 66 75 6e 63  ef="lang_aggfunc
3870: 2e 68 74 6d 6c 23 6d 61 78 67 67 75 6e 63 22 3e  .html#maxggunc">
3880: 61 67 67 72 65 67 61 74 65 20 66 75 6e 63 74 69  aggregate functi
3890: 6f 6e 3c 2f 61 3e 20 69 66 20 67 69 76 65 6e 20  on</a> if given 
38a0: 6f 6e 6c 79 20 61 20 73 69 6e 67 6c 65 20 61 72  only a single ar
38b0: 67 75 6d 65 6e 74 2e 0a 3c 2f 74 64 3e 3c 2f 74  gument..</td></t
38c0: 72 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e  r><tr><td valign
38d0: 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69  ="top" align="ri
38e0: 67 68 74 22 20 77 69 64 74 68 3d 22 31 32 30 22  ght" width="120"
38f0: 3e 3c 61 20 6e 61 6d 65 3d 22 6d 69 6e 6f 72 65  ><a name="minore
3900: 75 6e 63 22 3e 3c 2f 61 3e 0a 6d 69 6e 28 3c 69  unc"></a>.min(<i
3910: 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e 2c  >X</i>,<i>Y</i>,
3920: 2e 2e 2e 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c  ...)</td><td val
3930: 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65  ign="top">.  The
3940: 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65 6e 74 20   multi-argument 
3950: 6d 69 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20 72  min() function r
3960: 65 74 75 72 6e 73 20 74 68 65 20 61 72 67 75 6d  eturns the argum
3970: 65 6e 74 20 77 69 74 68 20 74 68 65 0a 20 20 6d  ent with the.  m
3980: 69 6e 69 6d 75 6d 20 76 61 6c 75 65 2e 0a 20 20  inimum value..  
3990: 54 68 65 20 6d 75 6c 74 69 2d 61 72 67 75 6d 65  The multi-argume
39a0: 6e 74 20 6d 69 6e 28 29 20 66 75 6e 63 74 69 6f  nt min() functio
39b0: 6e 20 73 65 61 72 63 68 65 73 20 69 74 73 20 61  n searches its a
39c0: 72 67 75 6d 65 6e 74 73 20 66 72 6f 6d 20 6c 65  rguments from le
39d0: 66 74 20 74 6f 20 72 69 67 68 74 0a 20 20 66 6f  ft to right.  fo
39e0: 72 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 74 68  r an argument th
39f0: 61 74 20 64 65 66 69 6e 65 73 20 61 20 63 6f 6c  at defines a col
3a00: 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 20  lating function 
3a10: 61 6e 64 20 75 73 65 73 20 74 68 61 74 20 63 6f  and uses that co
3a20: 6c 6c 61 74 69 6e 67 0a 20 20 66 75 6e 63 74 69  llating.  functi
3a30: 6f 6e 20 66 6f 72 20 61 6c 6c 20 73 74 72 69 6e  on for all strin
3a40: 67 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2e 20 20  g comparisons.  
3a50: 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 61  If none of the a
3a60: 72 67 75 6d 65 6e 74 73 20 74 6f 20 6d 69 6e 28  rguments to min(
3a70: 29 0a 20 20 64 65 66 69 6e 65 20 61 20 63 6f 6c  ).  define a col
3a80: 6c 61 74 69 6e 67 20 66 75 6e 63 74 69 6f 6e 2c  lating function,
3a90: 20 74 68 65 6e 20 74 68 65 20 42 49 4e 41 52 59   then the BINARY
3aa0: 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75 6e 63 74   collating funct
3ab0: 69 6f 6e 20 69 73 20 75 73 65 64 2e 0a 20 20 4e  ion is used..  N
3ac0: 6f 74 65 20 74 68 61 74 20 3c 62 3e 6d 69 6e 28  ote that <b>min(
3ad0: 29 3c 2f 62 3e 20 69 73 20 61 20 73 69 6d 70 6c  )</b> is a simpl
3ae0: 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 65 6e 0a  e function when.
3af0: 20 20 69 74 20 68 61 73 20 32 20 6f 72 20 6d 6f    it has 2 or mo
3b00: 72 65 20 61 72 67 75 6d 65 6e 74 73 20 62 75 74  re arguments but
3b10: 20 6f 70 65 72 61 74 65 73 20 61 73 20 61 6e 20   operates as an 
3b20: 0a 20 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67  .  <a href="lang
3b30: 5f 61 67 67 66 75 6e 63 2e 68 74 6d 6c 23 6d 69  _aggfunc.html#mi
3b40: 6e 67 67 75 6e 63 22 3e 61 67 67 72 65 67 61 74  nggunc">aggregat
3b50: 65 20 66 75 6e 63 74 69 6f 6e 3c 2f 61 3e 20 69  e function</a> i
3b60: 66 20 67 69 76 65 6e 0a 20 20 6f 6e 6c 79 20 61  f given.  only a
3b70: 20 73 69 6e 67 6c 65 20 61 72 67 75 6d 65 6e 74   single argument
3b80: 2e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e  ..</td></tr><tr>
3b90: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
3ba0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77   align="right" w
3bb0: 69 64 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61  idth="120"><a na
3bc0: 6d 65 3d 22 6e 75 6c 6c 69 66 22 3e 3c 2f 61 3e  me="nullif"></a>
3bd0: 0a 6e 75 6c 6c 69 66 28 3c 69 3e 58 3c 2f 69 3e  .nullif(<i>X</i>
3be0: 2c 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 3c  ,<i>Y</i>)</td><
3bf0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
3c00: 0a 20 20 54 68 65 20 6e 75 6c 6c 69 66 28 58 2c  .  The nullif(X,
3c10: 59 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75  Y) function retu
3c20: 72 6e 73 20 69 74 73 20 66 69 72 73 74 20 61 72  rns its first ar
3c30: 67 75 6d 65 6e 74 20 69 66 20 74 68 65 20 61 72  gument if the ar
3c40: 67 75 6d 65 6e 74 73 20 61 72 65 0a 20 20 64 69  guments are.  di
3c50: 66 66 65 72 65 6e 74 20 61 6e 64 20 4e 55 4c 4c  fferent and NULL
3c60: 20 69 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74   if the argument
3c70: 73 20 61 72 65 20 74 68 65 20 73 61 6d 65 2e 20  s are the same. 
3c80: 20 54 68 65 20 6e 75 6c 6c 69 66 28 58 2c 59 29   The nullif(X,Y)
3c90: 20 66 75 6e 63 74 69 6f 6e 0a 20 20 73 65 61 72   function.  sear
3ca0: 63 68 65 73 20 69 74 73 20 61 72 67 75 6d 65 6e  ches its argumen
3cb0: 74 73 20 66 72 6f 6d 20 6c 65 66 74 20 74 6f 20  ts from left to 
3cc0: 72 69 67 68 74 20 66 6f 72 20 61 6e 20 61 72 67  right for an arg
3cd0: 75 6d 65 6e 74 20 74 68 61 74 20 64 65 66 69 6e  ument that defin
3ce0: 65 73 20 61 0a 20 20 63 6f 6c 6c 61 74 69 6e 67  es a.  collating
3cf0: 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 75 73   function and us
3d00: 65 73 20 74 68 61 74 20 63 6f 6c 6c 61 74 69 6e  es that collatin
3d10: 67 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 61  g function for a
3d20: 6c 6c 20 73 74 72 69 6e 67 0a 20 20 63 6f 6d 70  ll string.  comp
3d30: 61 72 69 73 6f 6e 73 2e 20 20 49 66 20 6e 65 69  arisons.  If nei
3d40: 74 68 65 72 20 61 72 67 75 6d 65 6e 74 20 74 6f  ther argument to
3d50: 20 6e 75 6c 6c 69 66 28 29 20 64 65 66 69 6e 65   nullif() define
3d60: 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20 66 75  s a collating fu
3d70: 6e 63 74 69 6f 6e 0a 20 20 74 68 65 6e 20 74 68  nction.  then th
3d80: 65 20 42 49 4e 41 52 59 20 69 73 20 75 73 65 64  e BINARY is used
3d90: 2e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e  ..</td></tr><tr>
3da0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
3db0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77   align="right" w
3dc0: 69 64 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61  idth="120"><a na
3dd0: 6d 65 3d 22 70 72 69 6e 74 66 22 3e 3c 2f 61 3e  me="printf"></a>
3de0: 0a 70 72 69 6e 74 66 28 3c 69 3e 46 4f 52 4d 41  .printf(<i>FORMA
3df0: 54 3c 2f 69 3e 2c 2e 2e 2e 29 3c 2f 74 64 3e 3c  T</i>,...)</td><
3e00: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e  td valign="top">
3e10: 0a 20 20 54 68 65 20 70 72 69 6e 74 66 28 46 4f  .  The printf(FO
3e20: 52 4d 41 54 2c 2e 2e 2e 29 20 53 51 4c 20 66 75  RMAT,...) SQL fu
3e30: 6e 63 74 69 6f 6e 20 77 6f 72 6b 73 20 6c 69 6b  nction works lik
3e40: 65 20 74 68 65 20 3c 61 20 68 72 65 66 3d 22 63  e the <a href="c
3e50: 33 72 65 66 2f 6d 70 72 69 6e 74 66 2e 68 74 6d  3ref/mprintf.htm
3e60: 6c 22 3e 73 71 6c 69 74 65 33 5f 6d 70 72 69 6e  l">sqlite3_mprin
3e70: 74 66 28 29 3c 2f 61 3e 20 43 2d 6c 61 6e 67 75  tf()</a> C-langu
3e80: 61 67 65 0a 20 20 66 75 6e 63 74 69 6f 6e 20 61  age.  function a
3e90: 6e 64 20 74 68 65 20 70 72 69 6e 74 66 28 29 20  nd the printf() 
3ea0: 66 75 6e 63 74 69 6f 6e 20 66 72 6f 6d 20 74 68  function from th
3eb0: 65 20 73 74 61 6e 64 61 72 64 20 43 20 6c 69 62  e standard C lib
3ec0: 72 61 72 79 2e 0a 20 20 54 68 65 20 66 69 72 73  rary..  The firs
3ed0: 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20  t argument is a 
3ee0: 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 20 74 68  format string th
3ef0: 61 74 20 73 70 65 63 69 66 69 65 73 20 68 6f 77  at specifies how
3f00: 20 74 6f 20 63 6f 6e 73 74 72 75 63 74 20 74 68   to construct th
3f10: 65 20 6f 75 74 70 75 74 0a 20 20 73 74 72 69 6e  e output.  strin
3f20: 67 20 75 73 69 6e 67 20 76 61 6c 75 65 73 20 74  g using values t
3f30: 61 6b 65 6e 20 66 72 6f 6d 20 73 75 62 73 65 71  aken from subseq
3f40: 75 65 6e 74 20 61 72 67 75 6d 65 6e 74 73 2e 20  uent arguments. 
3f50: 20 49 66 20 74 68 65 20 46 4f 52 4d 41 54 20 61   If the FORMAT a
3f60: 72 67 75 6d 65 6e 74 20 69 73 0a 20 20 6d 69 73  rgument is.  mis
3f70: 73 69 6e 67 20 6f 72 20 4e 55 4c 4c 20 74 68 65  sing or NULL the
3f80: 6e 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20  n the result is 
3f90: 4e 55 4c 4c 2e 20 20 54 68 65 20 25 6e 20 66 6f  NULL.  The %n fo
3fa0: 72 6d 61 74 20 69 73 20 73 69 6c 65 6e 74 6c 79  rmat is silently
3fb0: 20 69 67 6e 6f 72 65 64 20 61 6e 64 0a 20 20 64   ignored and.  d
3fc0: 6f 65 73 20 6e 6f 74 20 63 6f 6e 73 75 6d 65 20  oes not consume 
3fd0: 61 6e 20 61 72 67 75 6d 65 6e 74 2e 20 20 54 68  an argument.  Th
3fe0: 65 20 25 70 20 66 6f 72 6d 61 74 20 69 73 20 61  e %p format is a
3ff0: 6e 20 61 6c 69 61 73 20 66 6f 72 20 25 58 2e 20  n alias for %X. 
4000: 20 54 68 65 20 25 7a 20 66 6f 72 6d 61 74 0a 20   The %z format. 
4010: 20 69 73 20 69 6e 74 65 72 63 68 61 6e 67 65 61   is interchangea
4020: 62 6c 65 20 77 69 74 68 20 25 73 2e 20 20 49 66  ble with %s.  If
4030: 20 74 68 65 72 65 20 61 72 65 20 74 6f 6f 20 66   there are too f
4040: 65 77 20 61 72 67 75 6d 65 6e 74 73 20 69 6e 20  ew arguments in 
4050: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73  the argument lis
4060: 74 2c 0a 20 20 6d 69 73 73 69 6e 67 20 61 72 67  t,.  missing arg
4070: 75 6d 65 6e 74 73 20 61 72 65 20 61 73 73 75 6d  uments are assum
4080: 65 64 20 74 6f 20 68 61 76 65 20 61 20 4e 55 4c  ed to have a NUL
4090: 4c 20 76 61 6c 75 65 2c 20 77 68 69 63 68 20 69  L value, which i
40a0: 73 20 74 72 61 6e 73 6c 61 74 65 64 20 69 6e 74  s translated int
40b0: 6f 0a 20 20 30 20 6f 72 20 30 2e 30 20 66 6f 72  o.  0 or 0.0 for
40c0: 20 6e 75 6d 65 72 69 63 20 66 6f 72 6d 61 74 73   numeric formats
40d0: 20 6f 72 20 61 6e 20 65 6d 70 74 79 20 73 74 72   or an empty str
40e0: 69 6e 67 20 66 6f 72 20 25 73 2e 0a 3c 2f 74 64  ing for %s..</td
40f0: 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61  ></tr><tr><td va
4100: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
4110: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 22  ="right" width="
4120: 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 71 75  120"><a name="qu
4130: 6f 74 65 22 3e 3c 2f 61 3e 0a 71 75 6f 74 65 28  ote"></a>.quote(
4140: 3c 69 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74  <i>X</i>)</td><t
4150: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a  d valign="top">.
4160: 20 20 54 68 65 20 71 75 6f 74 65 28 58 29 20 66    The quote(X) f
4170: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
4180: 74 68 65 20 74 65 78 74 20 6f 66 20 61 6e 20 53  the text of an S
4190: 51 4c 20 6c 69 74 65 72 61 6c 20 77 68 69 63 68  QL literal which
41a0: 0a 20 20 69 73 20 74 68 65 20 76 61 6c 75 65 20  .  is the value 
41b0: 6f 66 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20  of its argument 
41c0: 73 75 69 74 61 62 6c 65 20 66 6f 72 20 69 6e 63  suitable for inc
41d0: 6c 75 73 69 6f 6e 20 69 6e 74 6f 20 61 6e 20 53  lusion into an S
41e0: 51 4c 20 73 74 61 74 65 6d 65 6e 74 2e 0a 20 20  QL statement..  
41f0: 53 74 72 69 6e 67 73 20 61 72 65 20 73 75 72 72  Strings are surr
4200: 6f 75 6e 64 65 64 20 62 79 20 73 69 6e 67 6c 65  ounded by single
4210: 2d 71 75 6f 74 65 73 20 77 69 74 68 20 65 73 63  -quotes with esc
4220: 61 70 65 73 20 6f 6e 20 69 6e 74 65 72 69 6f 72  apes on interior
4230: 20 71 75 6f 74 65 73 0a 20 20 61 73 20 6e 65 65   quotes.  as nee
4240: 64 65 64 2e 20 20 42 4c 4f 42 73 20 61 72 65 20  ded.  BLOBs are 
4250: 65 6e 63 6f 64 65 64 20 61 73 20 68 65 78 61 64  encoded as hexad
4260: 65 63 69 6d 61 6c 20 6c 69 74 65 72 61 6c 73 2e  ecimal literals.
4270: 0a 20 20 53 74 72 69 6e 67 73 20 77 69 74 68 20  .  Strings with 
4280: 65 6d 62 65 64 64 65 64 20 4e 55 4c 20 63 68 61  embedded NUL cha
4290: 72 61 63 74 65 72 73 20 63 61 6e 6e 6f 74 20 62  racters cannot b
42a0: 65 20 72 65 70 72 65 73 65 6e 74 65 64 20 61 73  e represented as
42b0: 20 73 74 72 69 6e 67 0a 20 20 6c 69 74 65 72 61   string.  litera
42c0: 6c 73 20 69 6e 20 53 51 4c 20 61 6e 64 20 68 65  ls in SQL and he
42d0: 6e 63 65 20 74 68 65 20 72 65 74 75 72 6e 65 64  nce the returned
42e0: 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20   string literal 
42f0: 69 73 20 74 72 75 6e 63 61 74 65 64 20 70 72 69  is truncated pri
4300: 6f 72 0a 20 20 74 6f 20 74 68 65 20 66 69 72 73  or.  to the firs
4310: 74 20 4e 55 4c 2e 0a 3c 2f 74 64 3e 3c 2f 74 72  t NUL..</td></tr
4320: 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  ><tr><td valign=
4330: 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67  "top" align="rig
4340: 68 74 22 20 77 69 64 74 68 3d 22 31 32 30 22 3e  ht" width="120">
4350: 3c 61 20 6e 61 6d 65 3d 22 72 61 6e 64 6f 6d 22  <a name="random"
4360: 3e 3c 2f 61 3e 0a 72 61 6e 64 6f 6d 28 29 3c 2f  ></a>.random()</
4370: 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74  td><td valign="t
4380: 6f 70 22 3e 0a 20 20 54 68 65 20 72 61 6e 64 6f  op">.  The rando
4390: 6d 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  m() function ret
43a0: 75 72 6e 73 20 61 20 70 73 65 75 64 6f 2d 72 61  urns a pseudo-ra
43b0: 6e 64 6f 6d 20 69 6e 74 65 67 65 72 0a 20 20 62  ndom integer.  b
43c0: 65 74 77 65 65 6e 20 2d 39 32 32 33 33 37 32 30  etween -92233720
43d0: 33 36 38 35 34 37 37 35 38 30 38 20 61 6e 64 20  36854775808 and 
43e0: 2b 39 32 32 33 33 37 32 30 33 36 38 35 34 37 37  +922337203685477
43f0: 35 38 30 37 2e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e  5807..</td></tr>
4400: 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  <tr><td valign="
4410: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
4420: 74 22 20 77 69 64 74 68 3d 22 31 32 30 22 3e 3c  t" width="120"><
4430: 61 20 6e 61 6d 65 3d 22 72 61 6e 64 6f 6d 62 6c  a name="randombl
4440: 6f 62 22 3e 3c 2f 61 3e 0a 72 61 6e 64 6f 6d 62  ob"></a>.randomb
4450: 6c 6f 62 28 3c 69 3e 4e 3c 2f 69 3e 29 3c 2f 74  lob(<i>N</i>)</t
4460: 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f  d><td valign="to
4470: 70 22 3e 0a 20 20 54 68 65 20 72 61 6e 64 6f 6d  p">.  The random
4480: 62 6c 6f 62 28 4e 29 20 66 75 6e 63 74 69 6f 6e  blob(N) function
4490: 20 72 65 74 75 72 6e 20 61 6e 20 4e 2d 62 79 74   return an N-byt
44a0: 65 20 62 6c 6f 62 20 63 6f 6e 74 61 69 6e 69 6e  e blob containin
44b0: 67 20 70 73 65 75 64 6f 2d 72 61 6e 64 6f 6d 0a  g pseudo-random.
44c0: 20 20 62 79 74 65 73 2e 20 49 66 20 4e 20 69 73    bytes. If N is
44d0: 20 6c 65 73 73 20 74 68 61 6e 20 31 20 74 68 65   less than 1 the
44e0: 6e 20 61 20 31 2d 62 79 74 65 20 72 61 6e 64 6f  n a 1-byte rando
44f0: 6d 20 62 6c 6f 62 20 69 73 20 72 65 74 75 72 6e  m blob is return
4500: 65 64 2e 0a 0a 20 20 3c 70 3e 48 69 6e 74 3a 20  ed...  <p>Hint: 
4510: 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 63 61   applications ca
4520: 6e 20 67 65 6e 65 72 61 74 65 20 67 6c 6f 62 61  n generate globa
4530: 6c 6c 79 20 75 6e 69 71 75 65 20 69 64 65 6e 74  lly unique ident
4540: 69 66 69 65 72 73 0a 20 20 75 73 69 6e 67 20 74  ifiers.  using t
4550: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 74 6f 67  his function tog
4560: 65 74 68 65 72 20 77 69 74 68 20 3c 61 20 68 72  ether with <a hr
4570: 65 66 3d 22 6c 61 6e 67 5f 63 6f 72 65 66 75 6e  ef="lang_corefun
4580: 63 2e 68 74 6d 6c 23 68 65 78 22 3e 68 65 78 28  c.html#hex">hex(
4590: 29 3c 2f 61 3e 20 61 6e 64 2f 6f 72 0a 20 20 3c  )</a> and/or.  <
45a0: 61 20 68 72 65 66 3d 22 6c 61 6e 67 5f 63 6f 72  a href="lang_cor
45b0: 65 66 75 6e 63 2e 68 74 6d 6c 23 6c 6f 77 65 72  efunc.html#lower
45c0: 22 3e 6c 6f 77 65 72 28 29 3c 2f 61 3e 20 6c 69  ">lower()</a> li
45d0: 6b 65 20 74 68 69 73 3a 3c 2f 70 3e 0a 0a 20 20  ke this:</p>..  
45e0: 3c 62 6c 6f 63 6b 71 75 6f 74 65 3e 0a 20 20 68  <blockquote>.  h
45f0: 65 78 28 72 61 6e 64 6f 6d 62 6c 6f 62 28 31 36  ex(randomblob(16
4600: 29 29 3c 62 72 3e 3c 2f 62 72 3e 0a 20 20 6c 6f  ))<br></br>.  lo
4610: 77 65 72 28 68 65 78 28 72 61 6e 64 6f 6d 62 6c  wer(hex(randombl
4620: 6f 62 28 31 36 29 29 29 0a 20 20 3c 2f 62 6c 6f  ob(16))).  </blo
4630: 63 6b 71 75 6f 74 65 3e 0a 3c 2f 74 64 3e 3c 2f  ckquote>.</td></
4640: 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67  tr><tr><td valig
4650: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
4660: 69 67 68 74 22 20 77 69 64 74 68 3d 22 31 32 30  ight" width="120
4670: 22 3e 3c 61 20 6e 61 6d 65 3d 22 72 65 70 6c 61  "><a name="repla
4680: 63 65 22 3e 3c 2f 61 3e 0a 72 65 70 6c 61 63 65  ce"></a>.replace
4690: 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f  (<i>X</i>,<i>Y</
46a0: 69 3e 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c 2f 74 64  i>,<i>Z</i>)</td
46b0: 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70  ><td valign="top
46c0: 22 3e 0a 20 20 54 68 65 20 72 65 70 6c 61 63 65  ">.  The replace
46d0: 28 58 2c 59 2c 5a 29 20 66 75 6e 63 74 69 6f 6e  (X,Y,Z) function
46e0: 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e   returns a strin
46f0: 67 20 66 6f 72 6d 65 64 20 62 79 20 73 75 62 73  g formed by subs
4700: 74 69 74 75 74 69 6e 67 0a 20 20 73 74 72 69 6e  tituting.  strin
4710: 67 20 5a 20 66 6f 72 20 65 76 65 72 79 20 6f 63  g Z for every oc
4720: 63 75 72 72 65 6e 63 65 20 6f 66 20 73 74 72 69  currence of stri
4730: 6e 67 20 59 20 69 6e 20 73 74 72 69 6e 67 20 58  ng Y in string X
4740: 2e 20 20 54 68 65 20 3c 61 20 68 72 65 66 3d 22  .  The <a href="
4750: 64 61 74 61 74 79 70 65 33 2e 68 74 6d 6c 23 63  datatype3.html#c
4760: 6f 6c 6c 61 74 69 6f 6e 22 3e 42 49 4e 41 52 59  ollation">BINARY
4770: 3c 2f 61 3e 0a 20 20 63 6f 6c 6c 61 74 69 6e 67  </a>.  collating
4780: 20 73 65 71 75 65 6e 63 65 20 69 73 20 75 73 65   sequence is use
4790: 64 20 66 6f 72 20 63 6f 6d 70 61 72 69 73 6f 6e  d for comparison
47a0: 73 2e 20 20 49 66 20 59 20 69 73 20 61 6e 20 65  s.  If Y is an e
47b0: 6d 70 74 79 0a 20 20 73 74 72 69 6e 67 20 74 68  mpty.  string th
47c0: 65 6e 20 72 65 74 75 72 6e 20 58 20 75 6e 63 68  en return X unch
47d0: 61 6e 67 65 64 2e 20 20 49 66 20 5a 20 69 73 20  anged.  If Z is 
47e0: 6e 6f 74 20 69 6e 69 74 69 61 6c 6c 79 0a 20 20  not initially.  
47f0: 61 20 73 74 72 69 6e 67 2c 20 69 74 20 69 73 20  a string, it is 
4800: 63 61 73 74 20 74 6f 20 61 20 55 54 46 2d 38 20  cast to a UTF-8 
4810: 73 74 72 69 6e 67 20 70 72 69 6f 72 20 74 6f 20  string prior to 
4820: 70 72 6f 63 65 73 73 69 6e 67 2e 0a 3c 2f 74 64  processing..</td
4830: 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61  ></tr><tr><td va
4840: 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e  lign="top" align
4850: 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 22  ="right" width="
4860: 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 72 6f  120"><a name="ro
4870: 75 6e 64 22 3e 3c 2f 61 3e 0a 72 6f 75 6e 64 28  und"></a>.round(
4880: 3c 69 3e 58 3c 2f 69 3e 29 3c 62 72 20 2f 3e 72  <i>X</i>)<br />r
4890: 6f 75 6e 64 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69  ound(<i>X</i>,<i
48a0: 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74 64 20  >Y</i>)</td><td 
48b0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20  valign="top">.  
48c0: 54 68 65 20 72 6f 75 6e 64 28 58 2c 59 29 20 66  The round(X,Y) f
48d0: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
48e0: 61 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74  a floating-point
48f0: 0a 20 20 76 61 6c 75 65 20 58 20 72 6f 75 6e 64  .  value X round
4900: 65 64 20 74 6f 20 59 20 64 69 67 69 74 73 20 74  ed to Y digits t
4910: 6f 20 74 68 65 20 72 69 67 68 74 20 6f 66 20 74  o the right of t
4920: 68 65 20 64 65 63 69 6d 61 6c 20 70 6f 69 6e 74  he decimal point
4930: 2e 0a 20 20 49 66 20 74 68 65 20 59 20 61 72 67  ..  If the Y arg
4940: 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74 74 65 64  ument is omitted
4950: 2c 20 69 74 20 69 73 20 61 73 73 75 6d 65 64 20  , it is assumed 
4960: 74 6f 20 62 65 20 30 2e 0a 3c 2f 74 64 3e 3c 2f  to be 0..</td></
4970: 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67  tr><tr><td valig
4980: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
4990: 69 67 68 74 22 20 77 69 64 74 68 3d 22 31 32 30  ight" width="120
49a0: 22 3e 3c 61 20 6e 61 6d 65 3d 22 72 74 72 69 6d  "><a name="rtrim
49b0: 22 3e 3c 2f 61 3e 0a 72 74 72 69 6d 28 3c 69 3e  "></a>.rtrim(<i>
49c0: 58 3c 2f 69 3e 29 3c 62 72 20 2f 3e 72 74 72 69  X</i>)<br />rtri
49d0: 6d 28 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c  m(<i>X</i>,<i>Y<
49e0: 2f 69 3e 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c  /i>)</td><td val
49f0: 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65  ign="top">.  The
4a00: 20 72 74 72 69 6d 28 58 2c 59 29 20 66 75 6e 63   rtrim(X,Y) func
4a10: 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73  tion returns a s
4a20: 74 72 69 6e 67 20 66 6f 72 6d 65 64 20 62 79 20  tring formed by 
4a30: 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64  removing any and
4a40: 20 61 6c 6c 0a 20 20 63 68 61 72 61 63 74 65 72   all.  character
4a50: 73 20 74 68 61 74 20 61 70 70 65 61 72 20 69 6e  s that appear in
4a60: 20 59 20 66 72 6f 6d 20 74 68 65 20 72 69 67 68   Y from the righ
4a70: 74 20 73 69 64 65 20 6f 66 20 58 2e 0a 20 20 49  t side of X..  I
4a80: 66 20 74 68 65 20 59 20 61 72 67 75 6d 65 6e 74  f the Y argument
4a90: 20 69 73 20 6f 6d 69 74 74 65 64 2c 20 72 74 72   is omitted, rtr
4aa0: 69 6d 28 58 29 20 72 65 6d 6f 76 65 73 20 73 70  im(X) removes sp
4ab0: 61 63 65 73 20 66 72 6f 6d 20 74 68 65 20 72 69  aces from the ri
4ac0: 67 68 74 0a 20 20 73 69 64 65 20 6f 66 20 58 2e  ght.  side of X.
4ad0: 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c  .</td></tr><tr><
4ae0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
4af0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
4b00: 64 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d  dth="120"><a nam
4b10: 65 3d 22 73 6f 75 6e 64 65 78 22 3e 3c 2f 61 3e  e="soundex"></a>
4b20: 0a 73 6f 75 6e 64 65 78 28 3c 69 3e 58 3c 2f 69  .soundex(<i>X</i
4b30: 3e 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67  >)</td><td valig
4b40: 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65 20 73  n="top">.  The s
4b50: 6f 75 6e 64 65 78 28 58 29 20 66 75 6e 63 74 69  oundex(X) functi
4b60: 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74 72  on returns a str
4b70: 69 6e 67 20 74 68 61 74 20 69 73 20 74 68 65 20  ing that is the 
4b80: 73 6f 75 6e 64 65 78 20 65 6e 63 6f 64 69 6e 67  soundex encoding
4b90: 20 0a 20 20 6f 66 20 74 68 65 20 73 74 72 69 6e   .  of the strin
4ba0: 67 20 58 2e 0a 20 20 54 68 65 20 73 74 72 69 6e  g X..  The strin
4bb0: 67 20 22 3f 30 30 30 22 20 69 73 20 72 65 74 75  g "?000" is retu
4bc0: 72 6e 65 64 20 69 66 20 74 68 65 20 61 72 67 75  rned if the argu
4bd0: 6d 65 6e 74 20 69 73 20 4e 55 4c 4c 20 6f 72 20  ment is NULL or 
4be0: 63 6f 6e 74 61 69 6e 73 0a 20 20 6e 6f 20 41 53  contains.  no AS
4bf0: 43 49 49 20 61 6c 70 68 61 62 65 74 69 63 20 63  CII alphabetic c
4c00: 68 61 72 61 63 74 65 72 73 2e 0a 20 20 54 68 69  haracters..  Thi
4c10: 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6d  s function is om
4c20: 69 74 74 65 64 20 66 72 6f 6d 20 53 51 4c 69 74  itted from SQLit
4c30: 65 20 62 79 20 64 65 66 61 75 6c 74 2e 0a 20 20  e by default..  
4c40: 49 74 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c  It is only avail
4c50: 61 62 6c 65 20 69 66 20 74 68 65 20 3c 61 20 68  able if the <a h
4c60: 72 65 66 3d 22 63 6f 6d 70 69 6c 65 2e 68 74 6d  ref="compile.htm
4c70: 6c 23 73 6f 75 6e 64 65 78 22 3e 53 51 4c 49 54  l#soundex">SQLIT
4c80: 45 5f 53 4f 55 4e 44 45 58 3c 2f 61 3e 20 63 6f  E_SOUNDEX</a> co
4c90: 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f  mpile-time optio
4ca0: 6e 0a 20 20 69 73 20 75 73 65 64 20 77 68 65 6e  n.  is used when
4cb0: 20 53 51 4c 69 74 65 20 69 73 20 62 75 69 6c 74   SQLite is built
4cc0: 2e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e  ..</td></tr><tr>
4cd0: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
4ce0: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77   align="right" w
4cf0: 69 64 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61  idth="120"><a na
4d00: 6d 65 3d 22 73 71 6c 69 74 65 5f 63 6f 6d 70 69  me="sqlite_compi
4d10: 6c 65 6f 70 74 69 6f 6e 5f 67 65 74 22 3e 3c 2f  leoption_get"></
4d20: 61 3e 0a 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c  a>.sqlite_compil
4d30: 65 6f 70 74 69 6f 6e 5f 67 65 74 28 3c 69 3e 4e  eoption_get(<i>N
4d40: 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74 64 20 76 61  </i>)</td><td va
4d50: 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68  lign="top">.  Th
4d60: 65 20 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65  e sqlite_compile
4d70: 6f 70 74 69 6f 6e 5f 67 65 74 28 29 20 53 51 4c  option_get() SQL
4d80: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 77   function is a w
4d90: 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74 68  rapper around th
4da0: 65 0a 20 20 3c 61 20 68 72 65 66 3d 22 63 33 72  e.  <a href="c3r
4db0: 65 66 2f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  ef/compileoption
4dc0: 5f 67 65 74 2e 68 74 6d 6c 22 3e 73 71 6c 69 74  _get.html">sqlit
4dd0: 65 33 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e  e3_compileoption
4de0: 5f 67 65 74 28 29 3c 2f 61 3e 20 43 2f 43 2b 2b  _get()</a> C/C++
4df0: 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 54 68 69   function..  Thi
4e00: 73 20 72 6f 75 74 69 6e 65 20 72 65 74 75 72 6e  s routine return
4e10: 73 20 74 68 65 20 4e 2d 74 68 20 63 6f 6d 70 69  s the N-th compi
4e20: 6c 65 2d 74 69 6d 65 20 6f 70 74 69 6f 6e 20 75  le-time option u
4e30: 73 65 64 20 74 6f 20 62 75 69 6c 64 20 53 51 4c  sed to build SQL
4e40: 69 74 65 0a 20 20 6f 72 20 4e 55 4c 4c 20 69 66  ite.  or NULL if
4e50: 20 4e 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e   N is out of ran
4e60: 67 65 2e 20 20 53 65 65 20 61 6c 73 6f 20 74 68  ge.  See also th
4e70: 65 20 3c 61 20 68 72 65 66 3d 22 70 72 61 67 6d  e <a href="pragm
4e80: 61 2e 68 74 6d 6c 23 70 72 61 67 6d 61 5f 63 6f  a.html#pragma_co
4e90: 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 22 3e 63  mpile_options">c
4ea0: 6f 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 20 70  ompile_options p
4eb0: 72 61 67 6d 61 3c 2f 61 3e 2e 0a 3c 2f 74 64 3e  ragma</a>..</td>
4ec0: 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61 6c  </tr><tr><td val
4ed0: 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d  ign="top" align=
4ee0: 22 72 69 67 68 74 22 20 77 69 64 74 68 3d 22 31  "right" width="1
4ef0: 32 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 73 71 6c  20"><a name="sql
4f00: 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  ite_compileoptio
4f10: 6e 5f 75 73 65 64 22 3e 3c 2f 61 3e 0a 73 71 6c  n_used"></a>.sql
4f20: 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  ite_compileoptio
4f30: 6e 5f 75 73 65 64 28 3c 69 3e 58 3c 2f 69 3e 29  n_used(<i>X</i>)
4f40: 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  </td><td valign=
4f50: 22 74 6f 70 22 3e 0a 20 20 54 68 65 20 73 71 6c  "top">.  The sql
4f60: 69 74 65 5f 63 6f 6d 70 69 6c 65 6f 70 74 69 6f  ite_compileoptio
4f70: 6e 5f 75 73 65 64 28 29 20 53 51 4c 20 66 75 6e  n_used() SQL fun
4f80: 63 74 69 6f 6e 20 69 73 20 61 20 77 72 61 70 70  ction is a wrapp
4f90: 65 72 20 61 72 6f 75 6e 64 20 74 68 65 0a 20 20  er around the.  
4fa0: 3c 61 20 68 72 65 66 3d 22 63 33 72 65 66 2f 63  <a href="c3ref/c
4fb0: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 67 65 74  ompileoption_get
4fc0: 2e 68 74 6d 6c 22 3e 73 71 6c 69 74 65 33 5f 63  .html">sqlite3_c
4fd0: 6f 6d 70 69 6c 65 6f 70 74 69 6f 6e 5f 75 73 65  ompileoption_use
4fe0: 64 28 29 3c 2f 61 3e 20 43 2f 43 2b 2b 20 66 75  d()</a> C/C++ fu
4ff0: 6e 63 74 69 6f 6e 2e 0a 20 20 57 68 65 6e 20 74  nction..  When t
5000: 68 65 20 61 72 67 75 6d 65 6e 74 20 58 20 74 6f  he argument X to
5010: 20 73 71 6c 69 74 65 5f 63 6f 6d 70 69 6c 65 6f   sqlite_compileo
5020: 70 74 69 6f 6e 5f 75 73 65 64 28 58 29 20 69 73  ption_used(X) is
5030: 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 0a   a string which.
5040: 20 20 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66    is the name of
5050: 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20   a compile-time 
5060: 6f 70 74 69 6f 6e 2c 20 74 68 69 73 20 72 6f 75  option, this rou
5070: 74 69 6e 65 20 72 65 74 75 72 6e 73 20 74 72 75  tine returns tru
5080: 65 20 28 31 29 20 6f 72 0a 20 20 66 61 6c 73 65  e (1) or.  false
5090: 20 28 30 29 20 64 65 70 65 6e 64 69 6e 67 20 6f   (0) depending o
50a0: 6e 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74  n whether or not
50b0: 20 74 68 61 74 20 6f 70 74 69 6f 6e 20 77 61 73   that option was
50c0: 20 75 73 65 64 20 64 75 72 69 6e 67 20 74 68 65   used during the
50d0: 0a 20 20 62 75 69 6c 64 2e 0a 3c 2f 74 64 3e 3c  .  build..</td><
50e0: 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69  /tr><tr><td vali
50f0: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
5100: 72 69 67 68 74 22 20 77 69 64 74 68 3d 22 31 32  right" width="12
5110: 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 73 71 6c 69  0"><a name="sqli
5120: 74 65 5f 73 6f 75 72 63 65 5f 69 64 22 3e 3c 2f  te_source_id"></
5130: 61 3e 0a 73 71 6c 69 74 65 5f 73 6f 75 72 63 65  a>.sqlite_source
5140: 5f 69 64 28 29 3c 2f 74 64 3e 3c 74 64 20 76 61  _id()</td><td va
5150: 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68  lign="top">.  Th
5160: 65 20 73 71 6c 69 74 65 5f 73 6f 75 72 63 65 5f  e sqlite_source_
5170: 69 64 28 29 20 66 75 6e 63 74 69 6f 6e 20 72 65  id() function re
5180: 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 74  turns a string t
5190: 68 61 74 20 69 64 65 6e 74 69 66 69 65 73 20 74  hat identifies t
51a0: 68 65 0a 20 20 73 70 65 63 69 66 69 63 20 76 65  he.  specific ve
51b0: 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 73 6f 75  rsion of the sou
51c0: 72 63 65 20 63 6f 64 65 20 74 68 61 74 20 77 61  rce code that wa
51d0: 73 20 75 73 65 64 20 74 6f 20 62 75 69 6c 64 20  s used to build 
51e0: 74 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62  the SQLite.  lib
51f0: 72 61 72 79 2e 20 20 54 68 65 20 73 74 72 69 6e  rary.  The strin
5200: 67 20 72 65 74 75 72 6e 65 64 20 62 79 20 73 71  g returned by sq
5210: 6c 69 74 65 5f 73 6f 75 72 63 65 5f 69 64 28 29  lite_source_id()
5220: 20 62 65 67 69 6e 73 20 77 69 74 68 0a 20 20 74   begins with.  t
5230: 68 65 20 64 61 74 65 20 61 6e 64 20 74 69 6d 65  he date and time
5240: 20 74 68 61 74 20 74 68 65 20 73 6f 75 72 63 65   that the source
5250: 20 63 6f 64 65 20 77 61 73 20 63 68 65 63 6b 65   code was checke
5260: 64 20 69 6e 20 61 6e 64 20 69 73 20 66 6f 6c 6c  d in and is foll
5270: 6f 77 73 20 62 79 0a 20 20 61 6e 20 53 48 41 31  ows by.  an SHA1
5280: 20 68 61 73 68 20 74 68 61 74 20 75 6e 69 71 75   hash that uniqu
5290: 65 6c 79 20 69 64 65 6e 74 69 66 69 65 73 20 74  ely identifies t
52a0: 68 65 20 73 6f 75 72 63 65 20 74 72 65 65 2e 20  he source tree. 
52b0: 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69   This function i
52c0: 73 0a 20 20 61 6e 20 53 51 4c 20 77 72 61 70 70  s.  an SQL wrapp
52d0: 65 72 20 61 72 6f 75 6e 64 20 74 68 65 20 3c 61  er around the <a
52e0: 20 68 72 65 66 3d 22 63 33 72 65 66 2f 6c 69 62   href="c3ref/lib
52f0: 76 65 72 73 69 6f 6e 2e 68 74 6d 6c 22 3e 73 71  version.html">sq
5300: 6c 69 74 65 33 5f 73 6f 75 72 63 65 69 64 28 29  lite3_sourceid()
5310: 3c 2f 61 3e 20 43 20 69 6e 74 65 72 66 61 63 65  </a> C interface
5320: 2e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e  ..</td></tr><tr>
5330: 3c 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22  <td valign="top"
5340: 20 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77   align="right" w
5350: 69 64 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61  idth="120"><a na
5360: 6d 65 3d 22 73 71 6c 69 74 65 5f 76 65 72 73 69  me="sqlite_versi
5370: 6f 6e 22 3e 3c 2f 61 3e 0a 73 71 6c 69 74 65 5f  on"></a>.sqlite_
5380: 76 65 72 73 69 6f 6e 28 29 3c 2f 74 64 3e 3c 74  version()</td><t
5390: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a  d valign="top">.
53a0: 20 20 54 68 65 20 73 71 6c 69 74 65 5f 76 65 72    The sqlite_ver
53b0: 73 69 6f 6e 28 29 20 66 75 6e 63 74 69 6f 6e 20  sion() function 
53c0: 72 65 74 75 72 6e 73 20 74 68 65 20 76 65 72 73  returns the vers
53d0: 69 6f 6e 20 73 74 72 69 6e 67 20 66 6f 72 20 74  ion string for t
53e0: 68 65 20 53 51 4c 69 74 65 0a 20 20 6c 69 62 72  he SQLite.  libr
53f0: 61 72 79 20 74 68 61 74 20 69 73 20 72 75 6e 6e  ary that is runn
5400: 69 6e 67 2e 20 20 54 68 69 73 20 66 75 6e 63 74  ing.  This funct
5410: 69 6f 6e 20 69 73 20 61 6e 20 53 51 4c 0a 20 20  ion is an SQL.  
5420: 77 72 61 70 70 65 72 20 61 72 6f 75 6e 64 20 74  wrapper around t
5430: 68 65 20 3c 61 20 68 72 65 66 3d 22 63 33 72 65  he <a href="c3re
5440: 66 2f 6c 69 62 76 65 72 73 69 6f 6e 2e 68 74 6d  f/libversion.htm
5450: 6c 22 3e 73 71 6c 69 74 65 33 5f 6c 69 62 76 65  l">sqlite3_libve
5460: 72 73 69 6f 6e 28 29 3c 2f 61 3e 20 43 2d 69 6e  rsion()</a> C-in
5470: 74 65 72 66 61 63 65 2e 0a 3c 2f 74 64 3e 3c 2f  terface..</td></
5480: 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67  tr><tr><td valig
5490: 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72  n="top" align="r
54a0: 69 67 68 74 22 20 77 69 64 74 68 3d 22 31 32 30  ight" width="120
54b0: 22 3e 3c 61 20 6e 61 6d 65 3d 22 73 75 62 73 74  "><a name="subst
54c0: 72 22 3e 3c 2f 61 3e 0a 73 75 62 73 74 72 28 3c  r"></a>.substr(<
54d0: 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69 3e  i>X</i>,<i>Y</i>
54e0: 2c 3c 69 3e 5a 3c 2f 69 3e 29 3c 62 72 20 2f 3e  ,<i>Z</i>)<br />
54f0: 73 75 62 73 74 72 28 3c 69 3e 58 3c 2f 69 3e 2c  substr(<i>X</i>,
5500: 3c 69 3e 59 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74  <i>Y</i>)</td><t
5510: 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a  d valign="top">.
5520: 20 20 54 68 65 20 73 75 62 73 74 72 28 58 2c 59    The substr(X,Y
5530: 2c 5a 29 20 66 75 6e 63 74 69 6f 6e 20 72 65 74  ,Z) function ret
5540: 75 72 6e 73 20 61 20 73 75 62 73 74 72 69 6e 67  urns a substring
5550: 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67   of input string
5560: 20 58 20 74 68 61 74 20 62 65 67 69 6e 73 0a 20   X that begins. 
5570: 20 77 69 74 68 20 74 68 65 20 59 2d 74 68 20 63   with the Y-th c
5580: 68 61 72 61 63 74 65 72 20 61 6e 64 20 77 68 69  haracter and whi
5590: 63 68 20 69 73 20 5a 20 63 68 61 72 61 63 74 65  ch is Z characte
55a0: 72 73 20 6c 6f 6e 67 2e 0a 20 20 49 66 20 5a 20  rs long..  If Z 
55b0: 69 73 20 6f 6d 69 74 74 65 64 20 74 68 65 6e 20  is omitted then 
55c0: 73 75 62 73 74 72 28 58 2c 59 29 20 72 65 74 75  substr(X,Y) retu
55d0: 72 6e 73 20 61 6c 6c 20 63 68 61 72 61 63 74 65  rns all characte
55e0: 72 73 20 74 68 72 6f 75 67 68 20 74 68 65 20 65  rs through the e
55f0: 6e 64 0a 20 20 6f 66 20 74 68 65 20 73 74 72 69  nd.  of the stri
5600: 6e 67 20 58 20 62 65 67 69 6e 6e 69 6e 67 20 77  ng X beginning w
5610: 69 74 68 20 74 68 65 20 59 2d 74 68 2e 0a 20 20  ith the Y-th..  
5620: 54 68 65 20 6c 65 66 74 2d 6d 6f 73 74 20 63 68  The left-most ch
5630: 61 72 61 63 74 65 72 20 6f 66 20 58 20 69 73 20  aracter of X is 
5640: 6e 75 6d 62 65 72 20 31 2e 20 20 49 66 20 59 20  number 1.  If Y 
5650: 69 73 20 6e 65 67 61 74 69 76 65 0a 20 20 74 68  is negative.  th
5660: 65 6e 20 74 68 65 20 66 69 72 73 74 20 63 68 61  en the first cha
5670: 72 61 63 74 65 72 20 6f 66 20 74 68 65 20 73 75  racter of the su
5680: 62 73 74 72 69 6e 67 20 69 73 20 66 6f 75 6e 64  bstring is found
5690: 20 62 79 20 63 6f 75 6e 74 69 6e 67 20 66 72 6f   by counting fro
56a0: 6d 20 74 68 65 0a 20 20 72 69 67 68 74 20 72 61  m the.  right ra
56b0: 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 6c 65  ther than the le
56c0: 66 74 2e 20 20 49 66 20 5a 20 69 73 20 6e 65 67  ft.  If Z is neg
56d0: 61 74 69 76 65 20 74 68 65 6e 0a 20 20 74 68 65  ative then.  the
56e0: 20 61 62 73 28 5a 29 20 63 68 61 72 61 63 74 65   abs(Z) characte
56f0: 72 73 20 70 72 65 63 65 64 69 6e 67 20 74 68 65  rs preceding the
5700: 20 59 2d 74 68 20 63 68 61 72 61 63 74 65 72 20   Y-th character 
5710: 61 72 65 20 72 65 74 75 72 6e 65 64 2e 0a 20 20  are returned..  
5720: 49 66 20 58 20 69 73 20 61 20 73 74 72 69 6e 67  If X is a string
5730: 20 74 68 65 6e 20 63 68 61 72 61 63 74 65 72 73   then characters
5740: 20 69 6e 64 69 63 65 73 20 72 65 66 65 72 20 74   indices refer t
5750: 6f 20 61 63 74 75 61 6c 20 55 54 46 2d 38 20 0a  o actual UTF-8 .
5760: 20 20 63 68 61 72 61 63 74 65 72 73 2e 20 20 49    characters.  I
5770: 66 20 58 20 69 73 20 61 20 42 4c 4f 42 20 74 68  f X is a BLOB th
5780: 65 6e 20 74 68 65 20 69 6e 64 69 63 65 73 20 72  en the indices r
5790: 65 66 65 72 20 74 6f 20 62 79 74 65 73 2e 0a 3c  efer to bytes..<
57a0: 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64  /td></tr><tr><td
57b0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
57c0: 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74  ign="right" widt
57d0: 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d  h="120"><a name=
57e0: 22 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 22 3e  "total_changes">
57f0: 3c 2f 61 3e 0a 74 6f 74 61 6c 5f 63 68 61 6e 67  </a>.total_chang
5800: 65 73 28 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c  es()</td><td val
5810: 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65  ign="top">.  The
5820: 20 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73 28 29   total_changes()
5830: 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e   function return
5840: 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20  s the number of 
5850: 72 6f 77 20 63 68 61 6e 67 65 73 0a 20 20 63 61  row changes.  ca
5860: 75 73 65 64 20 62 79 20 49 4e 53 45 52 54 2c 20  used by INSERT, 
5870: 55 50 44 41 54 45 20 6f 72 20 44 45 4c 45 54 45  UPDATE or DELETE
5880: 0a 20 20 73 74 61 74 65 6d 65 6e 74 73 20 73 69  .  statements si
5890: 6e 63 65 20 74 68 65 20 63 75 72 72 65 6e 74 20  nce the current 
58a0: 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74  database connect
58b0: 69 6f 6e 20 77 61 73 20 6f 70 65 6e 65 64 2e 0a  ion was opened..
58c0: 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20    This function 
58d0: 69 73 20 61 20 77 72 61 70 70 65 72 20 61 72 6f  is a wrapper aro
58e0: 75 6e 64 20 74 68 65 20 3c 61 20 68 72 65 66 3d  und the <a href=
58f0: 22 63 33 72 65 66 2f 74 6f 74 61 6c 5f 63 68 61  "c3ref/total_cha
5900: 6e 67 65 73 2e 68 74 6d 6c 22 3e 73 71 6c 69 74  nges.html">sqlit
5910: 65 33 5f 74 6f 74 61 6c 5f 63 68 61 6e 67 65 73  e3_total_changes
5920: 28 29 3c 2f 61 3e 0a 20 20 43 2f 43 2b 2b 20 69  ()</a>.  C/C++ i
5930: 6e 74 65 72 66 61 63 65 2e 0a 3c 2f 74 64 3e 3c  nterface..</td><
5940: 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76 61 6c 69  /tr><tr><td vali
5950: 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67 6e 3d 22  gn="top" align="
5960: 72 69 67 68 74 22 20 77 69 64 74 68 3d 22 31 32  right" width="12
5970: 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 74 72 69 6d  0"><a name="trim
5980: 22 3e 3c 2f 61 3e 0a 74 72 69 6d 28 3c 69 3e 58  "></a>.trim(<i>X
5990: 3c 2f 69 3e 29 3c 62 72 20 2f 3e 74 72 69 6d 28  </i>)<br />trim(
59a0: 3c 69 3e 58 3c 2f 69 3e 2c 3c 69 3e 59 3c 2f 69  <i>X</i>,<i>Y</i
59b0: 3e 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67  >)</td><td valig
59c0: 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65 20 74  n="top">.  The t
59d0: 72 69 6d 28 58 2c 59 29 20 66 75 6e 63 74 69 6f  rim(X,Y) functio
59e0: 6e 20 72 65 74 75 72 6e 73 20 61 20 73 74 72 69  n returns a stri
59f0: 6e 67 20 66 6f 72 6d 65 64 20 62 79 20 72 65 6d  ng formed by rem
5a00: 6f 76 69 6e 67 20 61 6e 79 20 61 6e 64 20 61 6c  oving any and al
5a10: 6c 0a 20 20 63 68 61 72 61 63 74 65 72 73 20 74  l.  characters t
5a20: 68 61 74 20 61 70 70 65 61 72 20 69 6e 20 59 20  hat appear in Y 
5a30: 66 72 6f 6d 20 62 6f 74 68 20 65 6e 64 73 20 6f  from both ends o
5a40: 66 20 58 2e 0a 20 20 49 66 20 74 68 65 20 59 20  f X..  If the Y 
5a50: 61 72 67 75 6d 65 6e 74 20 69 73 20 6f 6d 69 74  argument is omit
5a60: 74 65 64 2c 20 74 72 69 6d 28 58 29 20 72 65 6d  ted, trim(X) rem
5a70: 6f 76 65 73 20 73 70 61 63 65 73 20 66 72 6f 6d  oves spaces from
5a80: 20 62 6f 74 68 20 65 6e 64 73 20 6f 66 20 58 2e   both ends of X.
5a90: 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c  .</td></tr><tr><
5aa0: 74 64 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20  td valign="top" 
5ab0: 61 6c 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69  align="right" wi
5ac0: 64 74 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d  dth="120"><a nam
5ad0: 65 3d 22 74 79 70 65 6f 66 22 3e 3c 2f 61 3e 0a  e="typeof"></a>.
5ae0: 74 79 70 65 6f 66 28 3c 69 3e 58 3c 2f 69 3e 29  typeof(<i>X</i>)
5af0: 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  </td><td valign=
5b00: 22 74 6f 70 22 3e 0a 20 20 54 68 65 20 74 79 70  "top">.  The typ
5b10: 65 6f 66 28 58 29 20 66 75 6e 63 74 69 6f 6e 20  eof(X) function 
5b20: 72 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67  returns a string
5b30: 20 74 68 61 74 20 69 6e 64 69 63 61 74 65 73 20   that indicates 
5b40: 74 68 65 20 3c 61 20 68 72 65 66 3d 22 64 61 74  the <a href="dat
5b50: 61 74 79 70 65 33 2e 68 74 6d 6c 22 3e 64 61 74  atype3.html">dat
5b60: 61 74 79 70 65 3c 2f 61 3e 20 6f 66 0a 20 20 74  atype</a> of.  t
5b70: 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 58 3a  he expression X:
5b80: 20 22 6e 75 6c 6c 22 2c 20 22 69 6e 74 65 67 65   "null", "intege
5b90: 72 22 2c 20 22 72 65 61 6c 22 2c 20 22 74 65 78  r", "real", "tex
5ba0: 74 22 2c 20 6f 72 20 22 62 6c 6f 62 22 2e 0a 3c  t", or "blob"..<
5bb0: 2f 74 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64  /td></tr><tr><td
5bc0: 20 76 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c   valign="top" al
5bd0: 69 67 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74  ign="right" widt
5be0: 68 3d 22 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d  h="120"><a name=
5bf0: 22 75 6e 6c 69 6b 65 6c 79 22 3e 3c 2f 61 3e 0a  "unlikely"></a>.
5c00: 75 6e 6c 69 6b 65 6c 79 28 3c 69 3e 58 3c 2f 69  unlikely(<i>X</i
5c10: 3e 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67  >)</td><td valig
5c20: 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65 20 75  n="top">.  The u
5c30: 6e 6c 69 6b 65 6c 79 28 58 29 20 66 75 6e 63 74  nlikely(X) funct
5c40: 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20  ion returns the 
5c50: 61 72 67 75 6d 65 6e 74 20 58 20 75 6e 63 68 61  argument X uncha
5c60: 6e 67 65 64 2e 0a 20 20 54 68 65 20 75 6e 6c 69  nged..  The unli
5c70: 6b 65 6c 79 28 58 29 20 66 75 6e 63 74 69 6f 6e  kely(X) function
5c80: 20 69 73 20 61 20 6e 6f 2d 6f 70 20 74 68 61 74   is a no-op that
5c90: 20 74 68 65 20 63 6f 64 65 20 67 65 6e 65 72 61   the code genera
5ca0: 74 6f 72 0a 20 20 6f 70 74 69 6d 69 7a 65 73 20  tor.  optimizes 
5cb0: 61 77 61 79 20 73 6f 20 74 68 61 74 20 69 74 20  away so that it 
5cc0: 63 6f 6e 73 75 6d 65 73 20 6e 6f 20 43 50 55 20  consumes no CPU 
5cd0: 63 79 63 6c 65 73 20 61 74 0a 20 20 72 75 6e 2d  cycles at.  run-
5ce0: 74 69 6d 65 20 28 74 68 61 74 20 69 73 2c 20 64  time (that is, d
5cf0: 75 72 69 6e 67 20 63 61 6c 6c 73 20 74 6f 20 3c  uring calls to <
5d00: 61 20 68 72 65 66 3d 22 63 33 72 65 66 2f 73 74  a href="c3ref/st
5d10: 65 70 2e 68 74 6d 6c 22 3e 73 71 6c 69 74 65 33  ep.html">sqlite3
5d20: 5f 73 74 65 70 28 29 3c 2f 61 3e 29 2e 0a 20 20  _step()</a>)..  
5d30: 54 68 65 20 70 75 72 70 6f 73 65 20 6f 66 20 74  The purpose of t
5d40: 68 65 20 75 6e 6c 69 6b 65 6c 79 28 58 29 20 66  he unlikely(X) f
5d50: 75 6e 63 74 69 6f 6e 20 69 73 20 74 6f 20 70 72  unction is to pr
5d60: 6f 76 69 64 65 20 61 20 68 69 6e 74 0a 20 20 74  ovide a hint.  t
5d70: 6f 20 74 68 65 20 71 75 65 72 79 20 70 6c 61 6e  o the query plan
5d80: 6e 65 72 20 74 68 61 74 20 74 68 65 20 61 72 67  ner that the arg
5d90: 75 6d 65 6e 74 20 58 20 69 73 20 61 20 62 6f 6f  ument X is a boo
5da0: 6c 65 61 6e 20 76 61 6c 75 65 0a 20 20 74 68 61  lean value.  tha
5db0: 74 20 69 73 20 75 73 75 61 6c 6c 79 20 6e 6f 74  t is usually not
5dc0: 20 74 72 75 65 2e 20 54 68 65 20 75 6e 6c 69 6b   true. The unlik
5dd0: 65 6c 79 28 58 29 20 66 75 6e 63 74 69 6f 6e 20  ely(X) function 
5de0: 69 73 20 65 71 75 69 76 61 6c 65 6e 74 0a 20 20  is equivalent.  
5df0: 74 6f 20 3c 61 20 68 72 65 66 3d 22 6c 61 6e 67  to <a href="lang
5e00: 5f 63 6f 72 65 66 75 6e 63 2e 68 74 6d 6c 23 6c  _corefunc.html#l
5e10: 69 6b 65 6c 69 68 6f 6f 64 22 3e 6c 69 6b 65 6c  ikelihood">likel
5e20: 69 68 6f 6f 64 3c 2f 61 3e 28 58 2c 20 30 2e 30  ihood</a>(X, 0.0
5e30: 36 32 35 29 2e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e  625)..</td></tr>
5e40: 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  <tr><td valign="
5e50: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
5e60: 74 22 20 77 69 64 74 68 3d 22 31 32 30 22 3e 3c  t" width="120"><
5e70: 61 20 6e 61 6d 65 3d 22 75 6e 69 63 6f 64 65 22  a name="unicode"
5e80: 3e 3c 2f 61 3e 0a 75 6e 69 63 6f 64 65 28 3c 69  ></a>.unicode(<i
5e90: 3e 58 3c 2f 69 3e 29 3c 2f 74 64 3e 3c 74 64 20  >X</i>)</td><td 
5ea0: 76 61 6c 69 67 6e 3d 22 74 6f 70 22 3e 0a 20 20  valign="top">.  
5eb0: 54 68 65 20 75 6e 69 63 6f 64 65 28 58 29 20 66  The unicode(X) f
5ec0: 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20  unction returns 
5ed0: 74 68 65 20 6e 75 6d 65 72 69 63 20 75 6e 69 63  the numeric unic
5ee0: 6f 64 65 20 63 6f 64 65 20 70 6f 69 6e 74 20 63  ode code point c
5ef0: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 0a  orresponding to.
5f00: 20 20 74 68 65 20 66 69 72 73 74 20 63 68 61 72    the first char
5f10: 61 63 74 65 72 20 6f 66 20 74 68 65 20 73 74 72  acter of the str
5f20: 69 6e 67 20 58 2e 20 20 49 66 20 74 68 65 20 61  ing X.  If the a
5f30: 72 67 75 6d 65 6e 74 20 74 6f 20 75 6e 69 63 6f  rgument to unico
5f40: 64 65 28 58 29 20 69 73 20 6e 6f 74 20 61 20 73  de(X) is not a s
5f50: 74 72 69 6e 67 0a 20 20 74 68 65 6e 20 74 68 65  tring.  then the
5f60: 20 72 65 73 75 6c 74 20 69 73 20 75 6e 64 65 66   result is undef
5f70: 69 6e 65 64 2e 0a 3c 2f 74 64 3e 3c 2f 74 72 3e  ined..</td></tr>
5f80: 3c 74 72 3e 3c 74 64 20 76 61 6c 69 67 6e 3d 22  <tr><td valign="
5f90: 74 6f 70 22 20 61 6c 69 67 6e 3d 22 72 69 67 68  top" align="righ
5fa0: 74 22 20 77 69 64 74 68 3d 22 31 32 30 22 3e 3c  t" width="120"><
5fb0: 61 20 6e 61 6d 65 3d 22 75 70 70 65 72 22 3e 3c  a name="upper"><
5fc0: 2f 61 3e 0a 75 70 70 65 72 28 3c 69 3e 58 3c 2f  /a>.upper(<i>X</
5fd0: 69 3e 29 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69  i>)</td><td vali
5fe0: 67 6e 3d 22 74 6f 70 22 3e 0a 20 20 54 68 65 20  gn="top">.  The 
5ff0: 75 70 70 65 72 28 58 29 20 66 75 6e 63 74 69 6f  upper(X) functio
6000: 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f 70 79  n returns a copy
6010: 20 6f 66 20 69 6e 70 75 74 20 73 74 72 69 6e 67   of input string
6020: 20 58 20 69 6e 20 77 68 69 63 68 20 61 6c 6c 20   X in which all 
6030: 0a 20 20 6c 6f 77 65 72 2d 63 61 73 65 20 41 53  .  lower-case AS
6040: 43 49 49 20 63 68 61 72 61 63 74 65 72 73 20 61  CII characters a
6050: 72 65 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20  re converted to 
6060: 74 68 65 69 72 20 75 70 70 65 72 2d 63 61 73 65  their upper-case
6070: 20 65 71 75 69 76 61 6c 65 6e 74 2e 0a 3c 2f 74   equivalent..</t
6080: 64 3e 3c 2f 74 72 3e 3c 74 72 3e 3c 74 64 20 76  d></tr><tr><td v
6090: 61 6c 69 67 6e 3d 22 74 6f 70 22 20 61 6c 69 67  align="top" alig
60a0: 6e 3d 22 72 69 67 68 74 22 20 77 69 64 74 68 3d  n="right" width=
60b0: 22 31 32 30 22 3e 3c 61 20 6e 61 6d 65 3d 22 7a  "120"><a name="z
60c0: 65 72 6f 62 6c 6f 62 22 3e 3c 2f 61 3e 0a 7a 65  eroblob"></a>.ze
60d0: 72 6f 62 6c 6f 62 28 3c 69 3e 4e 3c 2f 69 3e 29  roblob(<i>N</i>)
60e0: 3c 2f 74 64 3e 3c 74 64 20 76 61 6c 69 67 6e 3d  </td><td valign=
60f0: 22 74 6f 70 22 3e 0a 20 20 54 68 65 20 7a 65 72  "top">.  The zer
6100: 6f 62 6c 6f 62 28 4e 29 20 66 75 6e 63 74 69 6f  oblob(N) functio
6110: 6e 20 72 65 74 75 72 6e 73 20 61 20 42 4c 4f 42  n returns a BLOB
6120: 20 63 6f 6e 73 69 73 74 69 6e 67 20 6f 66 20 4e   consisting of N
6130: 20 62 79 74 65 73 20 6f 66 20 30 78 30 30 2e 0a   bytes of 0x00..
6140: 20 20 53 51 4c 69 74 65 20 6d 61 6e 61 67 65 73    SQLite manages
6150: 20 74 68 65 73 65 20 7a 65 72 6f 62 6c 6f 62 73   these zeroblobs
6160: 20 76 65 72 79 20 65 66 66 69 63 69 65 6e 74 6c   very efficientl
6170: 79 2e 20 20 5a 65 72 6f 62 6c 6f 62 73 20 63 61  y.  Zeroblobs ca
6180: 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 20 20 72  n be used to.  r
6190: 65 73 65 72 76 65 20 73 70 61 63 65 20 66 6f 72  eserve space for
61a0: 20 61 20 42 4c 4f 42 20 74 68 61 74 20 69 73 20   a BLOB that is 
61b0: 6c 61 74 65 72 20 77 72 69 74 74 65 6e 20 75 73  later written us
61c0: 69 6e 67 20 0a 20 20 3c 61 20 68 72 65 66 3d 22  ing .  <a href="
61d0: 63 33 72 65 66 2f 62 6c 6f 62 5f 6f 70 65 6e 2e  c3ref/blob_open.
61e0: 68 74 6d 6c 22 3e 69 6e 63 72 65 6d 65 6e 74 61  html">incrementa
61f0: 6c 20 42 4c 4f 42 20 49 2f 4f 3c 2f 61 3e 2e 0a  l BLOB I/O</a>..
6200: 20 20 54 68 69 73 20 53 51 4c 20 66 75 6e 63 74    This SQL funct
6210: 69 6f 6e 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74  ion is implement
6220: 65 64 20 75 73 69 6e 67 20 74 68 65 20 3c 61 20  ed using the <a 
6230: 68 72 65 66 3d 22 63 33 72 65 66 2f 72 65 73 75  href="c3ref/resu
6240: 6c 74 5f 62 6c 6f 62 2e 68 74 6d 6c 22 3e 73 71  lt_blob.html">sq
6250: 6c 69 74 65 33 5f 72 65 73 75 6c 74 5f 7a 65 72  lite3_result_zer
6260: 6f 62 6c 6f 62 28 29 3c 2f 61 3e 0a 20 20 72 6f  oblob()</a>.  ro
6270: 75 74 69 6e 65 20 66 72 6f 6d 20 74 68 65 20 43  utine from the C
6280: 2f 43 2b 2b 20 69 6e 74 65 72 66 61 63 65 2e 0a  /C++ interface..
6290: 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 2f 74 61 62  </td></tr>.</tab
62a0: 6c 65 3e 0a 0a 0a                                le>...