/* --------- Unicode 3.2, Part 2: Derived Props (Alpha & Dec) --------- Created By: Solomon Rutzky Created On: 2018-03-27 Updated On: n/a Location: https://pastebin.com/edit/qjEc7zvH Related blog post: https://SqlQuantumLeap.com/2018/04/02/the-uni-code-the-search-for-the-true-list-of-valid-characters-for-t-sql-regular-identifiers-part-1/ DESCRIPTION: This script adds and populates the "IsAlphabetic" and "IsDecimal" columns. The list of code points having the "Alphabetic" property is found in the text file noted below under "SOURCE DATA". The code points that have the "Decimal Number" property can be derived from the main "UnicodeCharacterDatabase" table using the algorithm found on the https://www.unicode.org/Public/3.2-Update/DerivedProperties-3.2.0.html page, in the "Derived Extracted Properties" chart, under "DerivedNumericType". As with the main "UnicodeCharacterDatabase" table, we are only concerned with just the BMP code points (i.e. the U+0000 through U+FFFF range). REQUIREMENTS: 1) SQL Server 2005 or newer 2) Unicode 3.2, Part 1: Unicode Character Database (UCD) found at: https://pastebin.com/Vj1HFg1v SOURCE DATA: https://www.unicode.org/Public/3.2-Update/DerivedCoreProperties-3.2.0.txt Copyright © 1991-2018 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either (a) this copyright and permission notice appear with all copies of the Data Files or Software, or (b) this copyright and permission notice appear in associated Documentation. THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. */ USE [UnicodeTesting]; SET NOCOUNT ON; IF (OBJECT_ID(N'[v3-2].UnicodeCharacterDatabase') IS NULL) BEGIN RAISERROR(' Missing the main "UnicodeCharacterDatabase" table. Please load that first. You can get it from: https://pastebin.com/Vj1HFg1v', 16, 1); RETURN; END; BEGIN TRAN; BEGIN TRY ----------------------------------------------------------------------- -- Add and populate: "IsAlphabetic" ----------------------------------- IF (NOT EXISTS( SELECT * FROM sys.columns sc WHERE sc.[object_id] = OBJECT_ID(N'[v3-2].UnicodeCharacterDatabase') AND sc.[name] = N'IsAlphabetic')) BEGIN ALTER TABLE [v3-2].UnicodeCharacterDatabase ADD [IsAlphabetic] BIT NULL; END; EXEC (N' UPDATE ucd SET ucd.[IsAlphabetic] = 1 -- SELECT * FROM [v3-2].UnicodeCharacterDatabase ucd WHERE 1 = 0 OR ucd.[CodePoint] BETWEEN 0x0041 AND 0x005A OR ucd.[CodePoint] BETWEEN 0x0061 AND 0x007A OR ucd.[CodePoint] = 0x00AA OR ucd.[CodePoint] = 0x00B5 OR ucd.[CodePoint] = 0x00BA OR ucd.[CodePoint] BETWEEN 0x00C0 AND 0x00D6 OR ucd.[CodePoint] BETWEEN 0x00D8 AND 0x00F6 OR ucd.[CodePoint] BETWEEN 0x00F8 AND 0x01BA OR ucd.[CodePoint] = 0x01BB OR ucd.[CodePoint] BETWEEN 0x01BC AND 0x01BF OR ucd.[CodePoint] BETWEEN 0x01C0 AND 0x01C3 OR ucd.[CodePoint] BETWEEN 0x01C4 AND 0x0220 OR ucd.[CodePoint] BETWEEN 0x0222 AND 0x0233 OR ucd.[CodePoint] BETWEEN 0x0250 AND 0x02AD OR ucd.[CodePoint] BETWEEN 0x02B0 AND 0x02B8 OR ucd.[CodePoint] BETWEEN 0x02BB AND 0x02C1 OR ucd.[CodePoint] BETWEEN 0x02D0 AND 0x02D1 OR ucd.[CodePoint] BETWEEN 0x02E0 AND 0x02E4 OR ucd.[CodePoint] = 0x02EE OR ucd.[CodePoint] = 0x0345 OR ucd.[CodePoint] = 0x037A OR ucd.[CodePoint] = 0x0386 OR ucd.[CodePoint] BETWEEN 0x0388 AND 0x038A OR ucd.[CodePoint] = 0x038C OR ucd.[CodePoint] BETWEEN 0x038E AND 0x03A1 OR ucd.[CodePoint] BETWEEN 0x03A3 AND 0x03CE OR ucd.[CodePoint] BETWEEN 0x03D0 AND 0x03F5 OR ucd.[CodePoint] BETWEEN 0x0400 AND 0x0481 OR ucd.[CodePoint] BETWEEN 0x048A AND 0x04CE OR ucd.[CodePoint] BETWEEN 0x04D0 AND 0x04F5 OR ucd.[CodePoint] BETWEEN 0x04F8 AND 0x04F9 OR ucd.[CodePoint] BETWEEN 0x0500 AND 0x050F OR ucd.[CodePoint] BETWEEN 0x0531 AND 0x0556 OR ucd.[CodePoint] = 0x0559 OR ucd.[CodePoint] BETWEEN 0x0561 AND 0x0587 OR ucd.[CodePoint] BETWEEN 0x05B0 AND 0x05B9 OR ucd.[CodePoint] BETWEEN 0x05BB AND 0x05BD OR ucd.[CodePoint] = 0x05BF OR ucd.[CodePoint] BETWEEN 0x05C1 AND 0x05C2 OR ucd.[CodePoint] = 0x05C4 OR ucd.[CodePoint] BETWEEN 0x05D0 AND 0x05EA OR ucd.[CodePoint] BETWEEN 0x05F0 AND 0x05F2 OR ucd.[CodePoint] BETWEEN 0x0621 AND 0x063A OR ucd.[CodePoint] = 0x0640 OR ucd.[CodePoint] BETWEEN 0x0641 AND 0x064A OR ucd.[CodePoint] BETWEEN 0x064B AND 0x0655 OR ucd.[CodePoint] BETWEEN 0x066E AND 0x066F OR ucd.[CodePoint] = 0x0670 OR ucd.[CodePoint] BETWEEN 0x0671 AND 0x06D3 OR ucd.[CodePoint] = 0x06D5 OR ucd.[CodePoint] BETWEEN 0x06D6 AND 0x06DC OR ucd.[CodePoint] BETWEEN 0x06E1 AND 0x06E4 OR ucd.[CodePoint] BETWEEN 0x06E5 AND 0x06E6 OR ucd.[CodePoint] BETWEEN 0x06E7 AND 0x06E8 OR ucd.[CodePoint] = 0x06ED OR ucd.[CodePoint] BETWEEN 0x06FA AND 0x06FC OR ucd.[CodePoint] = 0x0710 OR ucd.[CodePoint] = 0x0711 OR ucd.[CodePoint] BETWEEN 0x0712 AND 0x072C OR ucd.[CodePoint] BETWEEN 0x0730 AND 0x073F OR ucd.[CodePoint] BETWEEN 0x0780 AND 0x07A5 OR ucd.[CodePoint] BETWEEN 0x07A6 AND 0x07B0 OR ucd.[CodePoint] = 0x07B1 OR ucd.[CodePoint] BETWEEN 0x0901 AND 0x0902 OR ucd.[CodePoint] = 0x0903 OR ucd.[CodePoint] BETWEEN 0x0905 AND 0x0939 OR ucd.[CodePoint] = 0x093D OR ucd.[CodePoint] BETWEEN 0x093E AND 0x0940 OR ucd.[CodePoint] BETWEEN 0x0941 AND 0x0948 OR ucd.[CodePoint] BETWEEN 0x0949 AND 0x094C OR ucd.[CodePoint] = 0x0950 OR ucd.[CodePoint] BETWEEN 0x0958 AND 0x0961 OR ucd.[CodePoint] BETWEEN 0x0962 AND 0x0963 OR ucd.[CodePoint] = 0x0981 OR ucd.[CodePoint] BETWEEN 0x0982 AND 0x0983 OR ucd.[CodePoint] BETWEEN 0x0985 AND 0x098C OR ucd.[CodePoint] BETWEEN 0x098F AND 0x0990 OR ucd.[CodePoint] BETWEEN 0x0993 AND 0x09A8 OR ucd.[CodePoint] BETWEEN 0x09AA AND 0x09B0 OR ucd.[CodePoint] = 0x09B2 OR ucd.[CodePoint] BETWEEN 0x09B6 AND 0x09B9 OR ucd.[CodePoint] BETWEEN 0x09BE AND 0x09C0 OR ucd.[CodePoint] BETWEEN 0x09C1 AND 0x09C4 OR ucd.[CodePoint] BETWEEN 0x09C7 AND 0x09C8 OR ucd.[CodePoint] BETWEEN 0x09CB AND 0x09CC OR ucd.[CodePoint] = 0x09D7 OR ucd.[CodePoint] BETWEEN 0x09DC AND 0x09DD OR ucd.[CodePoint] BETWEEN 0x09DF AND 0x09E1 OR ucd.[CodePoint] BETWEEN 0x09E2 AND 0x09E3 OR ucd.[CodePoint] BETWEEN 0x09F0 AND 0x09F1 OR ucd.[CodePoint] = 0x0A02 OR ucd.[CodePoint] BETWEEN 0x0A05 AND 0x0A0A OR ucd.[CodePoint] BETWEEN 0x0A0F AND 0x0A10 OR ucd.[CodePoint] BETWEEN 0x0A13 AND 0x0A28 OR ucd.[CodePoint] BETWEEN 0x0A2A AND 0x0A30 OR ucd.[CodePoint] BETWEEN 0x0A32 AND 0x0A33 OR ucd.[CodePoint] BETWEEN 0x0A35 AND 0x0A36 OR ucd.[CodePoint] BETWEEN 0x0A38 AND 0x0A39 OR ucd.[CodePoint] BETWEEN 0x0A3E AND 0x0A40 OR ucd.[CodePoint] BETWEEN 0x0A41 AND 0x0A42 OR ucd.[CodePoint] BETWEEN 0x0A47 AND 0x0A48 OR ucd.[CodePoint] BETWEEN 0x0A4B AND 0x0A4C OR ucd.[CodePoint] BETWEEN 0x0A59 AND 0x0A5C OR ucd.[CodePoint] = 0x0A5E OR ucd.[CodePoint] BETWEEN 0x0A70 AND 0x0A71 OR ucd.[CodePoint] BETWEEN 0x0A72 AND 0x0A74 OR ucd.[CodePoint] BETWEEN 0x0A81 AND 0x0A82 OR ucd.[CodePoint] = 0x0A83 OR ucd.[CodePoint] BETWEEN 0x0A85 AND 0x0A8B OR ucd.[CodePoint] = 0x0A8D OR ucd.[CodePoint] BETWEEN 0x0A8F AND 0x0A91 OR ucd.[CodePoint] BETWEEN 0x0A93 AND 0x0AA8 OR ucd.[CodePoint] BETWEEN 0x0AAA AND 0x0AB0 OR ucd.[CodePoint] BETWEEN 0x0AB2 AND 0x0AB3 OR ucd.[CodePoint] BETWEEN 0x0AB5 AND 0x0AB9 OR ucd.[CodePoint] = 0x0ABD OR ucd.[CodePoint] BETWEEN 0x0ABE AND 0x0AC0 OR ucd.[CodePoint] BETWEEN 0x0AC1 AND 0x0AC5 OR ucd.[CodePoint] BETWEEN 0x0AC7 AND 0x0AC8 OR ucd.[CodePoint] = 0x0AC9 OR ucd.[CodePoint] BETWEEN 0x0ACB AND 0x0ACC OR ucd.[CodePoint] = 0x0AD0 OR ucd.[CodePoint] = 0x0AE0 OR ucd.[CodePoint] = 0x0B01 OR ucd.[CodePoint] BETWEEN 0x0B02 AND 0x0B03 OR ucd.[CodePoint] BETWEEN 0x0B05 AND 0x0B0C OR ucd.[CodePoint] BETWEEN 0x0B0F AND 0x0B10 OR ucd.[CodePoint] BETWEEN 0x0B13 AND 0x0B28 OR ucd.[CodePoint] BETWEEN 0x0B2A AND 0x0B30 OR ucd.[CodePoint] BETWEEN 0x0B32 AND 0x0B33 OR ucd.[CodePoint] BETWEEN 0x0B36 AND 0x0B39 OR ucd.[CodePoint] = 0x0B3D OR ucd.[CodePoint] = 0x0B3E OR ucd.[CodePoint] = 0x0B3F OR ucd.[CodePoint] = 0x0B40 OR ucd.[CodePoint] BETWEEN 0x0B41 AND 0x0B43 OR ucd.[CodePoint] BETWEEN 0x0B47 AND 0x0B48 OR ucd.[CodePoint] BETWEEN 0x0B4B AND 0x0B4C OR ucd.[CodePoint] = 0x0B56 OR ucd.[CodePoint] = 0x0B57 OR ucd.[CodePoint] BETWEEN 0x0B5C AND 0x0B5D OR ucd.[CodePoint] BETWEEN 0x0B5F AND 0x0B61 OR ucd.[CodePoint] = 0x0B82 OR ucd.[CodePoint] = 0x0B83 OR ucd.[CodePoint] BETWEEN 0x0B85 AND 0x0B8A OR ucd.[CodePoint] BETWEEN 0x0B8E AND 0x0B90 OR ucd.[CodePoint] BETWEEN 0x0B92 AND 0x0B95 OR ucd.[CodePoint] BETWEEN 0x0B99 AND 0x0B9A OR ucd.[CodePoint] = 0x0B9C OR ucd.[CodePoint] BETWEEN 0x0B9E AND 0x0B9F OR ucd.[CodePoint] BETWEEN 0x0BA3 AND 0x0BA4 OR ucd.[CodePoint] BETWEEN 0x0BA8 AND 0x0BAA OR ucd.[CodePoint] BETWEEN 0x0BAE AND 0x0BB5 OR ucd.[CodePoint] BETWEEN 0x0BB7 AND 0x0BB9 OR ucd.[CodePoint] BETWEEN 0x0BBE AND 0x0BBF OR ucd.[CodePoint] = 0x0BC0 OR ucd.[CodePoint] BETWEEN 0x0BC1 AND 0x0BC2 OR ucd.[CodePoint] BETWEEN 0x0BC6 AND 0x0BC8 OR ucd.[CodePoint] BETWEEN 0x0BCA AND 0x0BCC OR ucd.[CodePoint] = 0x0BD7 OR ucd.[CodePoint] BETWEEN 0x0C01 AND 0x0C03 OR ucd.[CodePoint] BETWEEN 0x0C05 AND 0x0C0C OR ucd.[CodePoint] BETWEEN 0x0C0E AND 0x0C10 OR ucd.[CodePoint] BETWEEN 0x0C12 AND 0x0C28 OR ucd.[CodePoint] BETWEEN 0x0C2A AND 0x0C33 OR ucd.[CodePoint] BETWEEN 0x0C35 AND 0x0C39 OR ucd.[CodePoint] BETWEEN 0x0C3E AND 0x0C40 OR ucd.[CodePoint] BETWEEN 0x0C41 AND 0x0C44 OR ucd.[CodePoint] BETWEEN 0x0C46 AND 0x0C48 OR ucd.[CodePoint] BETWEEN 0x0C4A AND 0x0C4C OR ucd.[CodePoint] BETWEEN 0x0C55 AND 0x0C56 OR ucd.[CodePoint] BETWEEN 0x0C60 AND 0x0C61 OR ucd.[CodePoint] BETWEEN 0x0C82 AND 0x0C83 OR ucd.[CodePoint] BETWEEN 0x0C85 AND 0x0C8C OR ucd.[CodePoint] BETWEEN 0x0C8E AND 0x0C90 OR ucd.[CodePoint] BETWEEN 0x0C92 AND 0x0CA8 OR ucd.[CodePoint] BETWEEN 0x0CAA AND 0x0CB3 OR ucd.[CodePoint] BETWEEN 0x0CB5 AND 0x0CB9 OR ucd.[CodePoint] = 0x0CBE OR ucd.[CodePoint] = 0x0CBF OR ucd.[CodePoint] BETWEEN 0x0CC0 AND 0x0CC4 OR ucd.[CodePoint] = 0x0CC6 OR ucd.[CodePoint] BETWEEN 0x0CC7 AND 0x0CC8 OR ucd.[CodePoint] BETWEEN 0x0CCA AND 0x0CCB OR ucd.[CodePoint] = 0x0CCC OR ucd.[CodePoint] BETWEEN 0x0CD5 AND 0x0CD6 OR ucd.[CodePoint] = 0x0CDE OR ucd.[CodePoint] BETWEEN 0x0CE0 AND 0x0CE1 OR ucd.[CodePoint] BETWEEN 0x0D02 AND 0x0D03 OR ucd.[CodePoint] BETWEEN 0x0D05 AND 0x0D0C OR ucd.[CodePoint] BETWEEN 0x0D0E AND 0x0D10 OR ucd.[CodePoint] BETWEEN 0x0D12 AND 0x0D28 OR ucd.[CodePoint] BETWEEN 0x0D2A AND 0x0D39 OR ucd.[CodePoint] BETWEEN 0x0D3E AND 0x0D40 OR ucd.[CodePoint] BETWEEN 0x0D41 AND 0x0D43 OR ucd.[CodePoint] BETWEEN 0x0D46 AND 0x0D48 OR ucd.[CodePoint] BETWEEN 0x0D4A AND 0x0D4C OR ucd.[CodePoint] = 0x0D57 OR ucd.[CodePoint] BETWEEN 0x0D60 AND 0x0D61 OR ucd.[CodePoint] BETWEEN 0x0D82 AND 0x0D83 OR ucd.[CodePoint] BETWEEN 0x0D85 AND 0x0D96 OR ucd.[CodePoint] BETWEEN 0x0D9A AND 0x0DB1 OR ucd.[CodePoint] BETWEEN 0x0DB3 AND 0x0DBB OR ucd.[CodePoint] = 0x0DBD OR ucd.[CodePoint] BETWEEN 0x0DC0 AND 0x0DC6 OR ucd.[CodePoint] BETWEEN 0x0DCF AND 0x0DD1 OR ucd.[CodePoint] BETWEEN 0x0DD2 AND 0x0DD4 OR ucd.[CodePoint] = 0x0DD6 OR ucd.[CodePoint] BETWEEN 0x0DD8 AND 0x0DDF OR ucd.[CodePoint] BETWEEN 0x0DF2 AND 0x0DF3 OR ucd.[CodePoint] BETWEEN 0x0E01 AND 0x0E30 OR ucd.[CodePoint] = 0x0E31 OR ucd.[CodePoint] BETWEEN 0x0E32 AND 0x0E33 OR ucd.[CodePoint] BETWEEN 0x0E34 AND 0x0E3A OR ucd.[CodePoint] BETWEEN 0x0E40 AND 0x0E45 OR ucd.[CodePoint] = 0x0E46 OR ucd.[CodePoint] = 0x0E4D OR ucd.[CodePoint] BETWEEN 0x0E81 AND 0x0E82 OR ucd.[CodePoint] = 0x0E84 OR ucd.[CodePoint] BETWEEN 0x0E87 AND 0x0E88 OR ucd.[CodePoint] = 0x0E8A OR ucd.[CodePoint] = 0x0E8D OR ucd.[CodePoint] BETWEEN 0x0E94 AND 0x0E97 OR ucd.[CodePoint] BETWEEN 0x0E99 AND 0x0E9F OR ucd.[CodePoint] BETWEEN 0x0EA1 AND 0x0EA3 OR ucd.[CodePoint] = 0x0EA5 OR ucd.[CodePoint] = 0x0EA7 OR ucd.[CodePoint] BETWEEN 0x0EAA AND 0x0EAB OR ucd.[CodePoint] BETWEEN 0x0EAD AND 0x0EB0 OR ucd.[CodePoint] = 0x0EB1 OR ucd.[CodePoint] BETWEEN 0x0EB2 AND 0x0EB3 OR ucd.[CodePoint] BETWEEN 0x0EB4 AND 0x0EB9 OR ucd.[CodePoint] BETWEEN 0x0EBB AND 0x0EBC OR ucd.[CodePoint] = 0x0EBD OR ucd.[CodePoint] BETWEEN 0x0EC0 AND 0x0EC4 OR ucd.[CodePoint] = 0x0EC6 OR ucd.[CodePoint] = 0x0ECD OR ucd.[CodePoint] BETWEEN 0x0EDC AND 0x0EDD OR ucd.[CodePoint] = 0x0F00 OR ucd.[CodePoint] BETWEEN 0x0F40 AND 0x0F47 OR ucd.[CodePoint] BETWEEN 0x0F49 AND 0x0F6A OR ucd.[CodePoint] BETWEEN 0x0F71 AND 0x0F7E OR ucd.[CodePoint] = 0x0F7F OR ucd.[CodePoint] BETWEEN 0x0F80 AND 0x0F81 OR ucd.[CodePoint] BETWEEN 0x0F88 AND 0x0F8B OR ucd.[CodePoint] BETWEEN 0x0F90 AND 0x0F97 OR ucd.[CodePoint] BETWEEN 0x0F99 AND 0x0FBC OR ucd.[CodePoint] BETWEEN 0x1000 AND 0x1021 OR ucd.[CodePoint] BETWEEN 0x1023 AND 0x1027 OR ucd.[CodePoint] BETWEEN 0x1029 AND 0x102A OR ucd.[CodePoint] = 0x102C OR ucd.[CodePoint] BETWEEN 0x102D AND 0x1030 OR ucd.[CodePoint] = 0x1031 OR ucd.[CodePoint] = 0x1032 OR ucd.[CodePoint] = 0x1036 OR ucd.[CodePoint] = 0x1038 OR ucd.[CodePoint] BETWEEN 0x1050 AND 0x1055 OR ucd.[CodePoint] BETWEEN 0x1056 AND 0x1057 OR ucd.[CodePoint] BETWEEN 0x1058 AND 0x1059 OR ucd.[CodePoint] BETWEEN 0x10A0 AND 0x10C5 OR ucd.[CodePoint] BETWEEN 0x10D0 AND 0x10F8 OR ucd.[CodePoint] BETWEEN 0x1100 AND 0x1159 OR ucd.[CodePoint] BETWEEN 0x115F AND 0x11A2 OR ucd.[CodePoint] BETWEEN 0x11A8 AND 0x11F9 OR ucd.[CodePoint] BETWEEN 0x1200 AND 0x1206 OR ucd.[CodePoint] BETWEEN 0x1208 AND 0x1246 OR ucd.[CodePoint] = 0x1248 OR ucd.[CodePoint] BETWEEN 0x124A AND 0x124D OR ucd.[CodePoint] BETWEEN 0x1250 AND 0x1256 OR ucd.[CodePoint] = 0x1258 OR ucd.[CodePoint] BETWEEN 0x125A AND 0x125D OR ucd.[CodePoint] BETWEEN 0x1260 AND 0x1286 OR ucd.[CodePoint] = 0x1288 OR ucd.[CodePoint] BETWEEN 0x128A AND 0x128D OR ucd.[CodePoint] BETWEEN 0x1290 AND 0x12AE OR ucd.[CodePoint] = 0x12B0 OR ucd.[CodePoint] BETWEEN 0x12B2 AND 0x12B5 OR ucd.[CodePoint] BETWEEN 0x12B8 AND 0x12BE OR ucd.[CodePoint] = 0x12C0 OR ucd.[CodePoint] BETWEEN 0x12C2 AND 0x12C5 OR ucd.[CodePoint] BETWEEN 0x12C8 AND 0x12CE OR ucd.[CodePoint] BETWEEN 0x12D0 AND 0x12D6 OR ucd.[CodePoint] BETWEEN 0x12D8 AND 0x12EE OR ucd.[CodePoint] BETWEEN 0x12F0 AND 0x130E OR ucd.[CodePoint] = 0x1310 OR ucd.[CodePoint] BETWEEN 0x1312 AND 0x1315 OR ucd.[CodePoint] BETWEEN 0x1318 AND 0x131E OR ucd.[CodePoint] BETWEEN 0x1320 AND 0x1346 OR ucd.[CodePoint] BETWEEN 0x1348 AND 0x135A OR ucd.[CodePoint] BETWEEN 0x13A0 AND 0x13F4 OR ucd.[CodePoint] BETWEEN 0x1401 AND 0x166C OR ucd.[CodePoint] BETWEEN 0x166F AND 0x1676 OR ucd.[CodePoint] BETWEEN 0x1681 AND 0x169A OR ucd.[CodePoint] BETWEEN 0x16A0 AND 0x16EA OR ucd.[CodePoint] BETWEEN 0x16EE AND 0x16F0 OR ucd.[CodePoint] BETWEEN 0x1700 AND 0x170C OR ucd.[CodePoint] BETWEEN 0x170E AND 0x1711 OR ucd.[CodePoint] BETWEEN 0x1712 AND 0x1713 OR ucd.[CodePoint] BETWEEN 0x1720 AND 0x1731 OR ucd.[CodePoint] BETWEEN 0x1732 AND 0x1733 OR ucd.[CodePoint] BETWEEN 0x1740 AND 0x1751 OR ucd.[CodePoint] BETWEEN 0x1752 AND 0x1753 OR ucd.[CodePoint] BETWEEN 0x1760 AND 0x176C OR ucd.[CodePoint] BETWEEN 0x176E AND 0x1770 OR ucd.[CodePoint] BETWEEN 0x1772 AND 0x1773 OR ucd.[CodePoint] BETWEEN 0x1780 AND 0x17B3 OR ucd.[CodePoint] BETWEEN 0x17B4 AND 0x17B6 OR ucd.[CodePoint] BETWEEN 0x17B7 AND 0x17BD OR ucd.[CodePoint] BETWEEN 0x17BE AND 0x17C5 OR ucd.[CodePoint] = 0x17C6 OR ucd.[CodePoint] BETWEEN 0x17C7 AND 0x17C8 OR ucd.[CodePoint] = 0x17D7 OR ucd.[CodePoint] = 0x17DC OR ucd.[CodePoint] BETWEEN 0x1820 AND 0x1842 OR ucd.[CodePoint] = 0x1843 OR ucd.[CodePoint] BETWEEN 0x1844 AND 0x1877 OR ucd.[CodePoint] BETWEEN 0x1880 AND 0x18A8 OR ucd.[CodePoint] = 0x18A9 OR ucd.[CodePoint] BETWEEN 0x1E00 AND 0x1E9B OR ucd.[CodePoint] BETWEEN 0x1EA0 AND 0x1EF9 OR ucd.[CodePoint] BETWEEN 0x1F00 AND 0x1F15 OR ucd.[CodePoint] BETWEEN 0x1F18 AND 0x1F1D OR ucd.[CodePoint] BETWEEN 0x1F20 AND 0x1F45 OR ucd.[CodePoint] BETWEEN 0x1F48 AND 0x1F4D OR ucd.[CodePoint] BETWEEN 0x1F50 AND 0x1F57 OR ucd.[CodePoint] = 0x1F59 OR ucd.[CodePoint] = 0x1F5B OR ucd.[CodePoint] = 0x1F5D OR ucd.[CodePoint] BETWEEN 0x1F5F AND 0x1F7D OR ucd.[CodePoint] BETWEEN 0x1F80 AND 0x1FB4 OR ucd.[CodePoint] BETWEEN 0x1FB6 AND 0x1FBC OR ucd.[CodePoint] = 0x1FBE OR ucd.[CodePoint] BETWEEN 0x1FC2 AND 0x1FC4 OR ucd.[CodePoint] BETWEEN 0x1FC6 AND 0x1FCC OR ucd.[CodePoint] BETWEEN 0x1FD0 AND 0x1FD3 OR ucd.[CodePoint] BETWEEN 0x1FD6 AND 0x1FDB OR ucd.[CodePoint] BETWEEN 0x1FE0 AND 0x1FEC OR ucd.[CodePoint] BETWEEN 0x1FF2 AND 0x1FF4 OR ucd.[CodePoint] BETWEEN 0x1FF6 AND 0x1FFC OR ucd.[CodePoint] = 0x2071 OR ucd.[CodePoint] = 0x207F OR ucd.[CodePoint] = 0x2102 OR ucd.[CodePoint] = 0x2107 OR ucd.[CodePoint] BETWEEN 0x210A AND 0x2113 OR ucd.[CodePoint] = 0x2115 OR ucd.[CodePoint] BETWEEN 0x2119 AND 0x211D OR ucd.[CodePoint] = 0x2124 OR ucd.[CodePoint] = 0x2126 OR ucd.[CodePoint] = 0x2128 OR ucd.[CodePoint] BETWEEN 0x212A AND 0x212D OR ucd.[CodePoint] BETWEEN 0x212F AND 0x2131 OR ucd.[CodePoint] BETWEEN 0x2133 AND 0x2134 OR ucd.[CodePoint] BETWEEN 0x2135 AND 0x2138 OR ucd.[CodePoint] = 0x2139 OR ucd.[CodePoint] BETWEEN 0x213D AND 0x213F OR ucd.[CodePoint] BETWEEN 0x2145 AND 0x2149 OR ucd.[CodePoint] BETWEEN 0x2160 AND 0x2183 OR ucd.[CodePoint] = 0x3005 OR ucd.[CodePoint] = 0x3006 OR ucd.[CodePoint] = 0x3007 OR ucd.[CodePoint] BETWEEN 0x3021 AND 0x3029 OR ucd.[CodePoint] BETWEEN 0x3031 AND 0x3035 OR ucd.[CodePoint] BETWEEN 0x3038 AND 0x303A OR ucd.[CodePoint] = 0x303B OR ucd.[CodePoint] = 0x303C OR ucd.[CodePoint] BETWEEN 0x3041 AND 0x3096 OR ucd.[CodePoint] BETWEEN 0x309D AND 0x309E OR ucd.[CodePoint] = 0x309F OR ucd.[CodePoint] BETWEEN 0x30A1 AND 0x30FA OR ucd.[CodePoint] BETWEEN 0x30FC AND 0x30FE OR ucd.[CodePoint] = 0x30FF OR ucd.[CodePoint] BETWEEN 0x3105 AND 0x312C OR ucd.[CodePoint] BETWEEN 0x3131 AND 0x318E OR ucd.[CodePoint] BETWEEN 0x31A0 AND 0x31B7 OR ucd.[CodePoint] BETWEEN 0x31F0 AND 0x31FF OR ucd.[CodePoint] BETWEEN 0x3400 AND 0x4DB5 OR ucd.[CodePoint] BETWEEN 0x4E00 AND 0x9FA5 OR ucd.[CodePoint] BETWEEN 0xA000 AND 0xA48C OR ucd.[CodePoint] BETWEEN 0xAC00 AND 0xD7A3 OR ucd.[CodePoint] BETWEEN 0xF900 AND 0xFA2D OR ucd.[CodePoint] BETWEEN 0xFA30 AND 0xFA6A OR ucd.[CodePoint] BETWEEN 0xFB00 AND 0xFB06 OR ucd.[CodePoint] BETWEEN 0xFB13 AND 0xFB17 OR ucd.[CodePoint] = 0xFB1D OR ucd.[CodePoint] = 0xFB1E OR ucd.[CodePoint] BETWEEN 0xFB1F AND 0xFB28 OR ucd.[CodePoint] BETWEEN 0xFB2A AND 0xFB36 OR ucd.[CodePoint] BETWEEN 0xFB38 AND 0xFB3C OR ucd.[CodePoint] = 0xFB3E OR ucd.[CodePoint] BETWEEN 0xFB40 AND 0xFB41 OR ucd.[CodePoint] BETWEEN 0xFB43 AND 0xFB44 OR ucd.[CodePoint] BETWEEN 0xFB46 AND 0xFBB1 OR ucd.[CodePoint] BETWEEN 0xFBD3 AND 0xFD3D OR ucd.[CodePoint] BETWEEN 0xFD50 AND 0xFD8F OR ucd.[CodePoint] BETWEEN 0xFD92 AND 0xFDC7 OR ucd.[CodePoint] BETWEEN 0xFDF0 AND 0xFDFB OR ucd.[CodePoint] BETWEEN 0xFE70 AND 0xFE74 OR ucd.[CodePoint] BETWEEN 0xFE76 AND 0xFEFC OR ucd.[CodePoint] BETWEEN 0xFF21 AND 0xFF3A OR ucd.[CodePoint] BETWEEN 0xFF41 AND 0xFF5A OR ucd.[CodePoint] BETWEEN 0xFF66 AND 0xFF6F OR ucd.[CodePoint] = 0xFF70 OR ucd.[CodePoint] BETWEEN 0xFF71 AND 0xFF9D OR ucd.[CodePoint] BETWEEN 0xFF9E AND 0xFF9F OR ucd.[CodePoint] BETWEEN 0xFFA0 AND 0xFFBE OR ucd.[CodePoint] BETWEEN 0xFFC2 AND 0xFFC7 OR ucd.[CodePoint] BETWEEN 0xFFCA AND 0xFFCF OR ucd.[CodePoint] BETWEEN 0xFFD2 AND 0xFFD7 OR ucd.[CodePoint] BETWEEN 0xFFDA AND 0xFFDC '); ----------------------------------------------------------------------- -- Add and populate: "IsDecimal" ----------------------------------- IF (NOT EXISTS( SELECT * FROM sys.columns sc WHERE sc.[object_id] = OBJECT_ID(N'[v3-2].UnicodeCharacterDatabase') AND sc.[name] = N'IsDecimal')) BEGIN ALTER TABLE [v3-2].UnicodeCharacterDatabase ADD [IsDecimal] BIT NULL; END; EXEC (N' UPDATE ucd SET ucd.[IsDecimal] = 1 -- SELECT * FROM [v3-2].UnicodeCharacterDatabase ucd WHERE ucd.[DecimalDigitValue] IS NOT NULL AND ucd.[DigitValue] IS NOT NULL AND ucd.[NumericValue] IS NOT NULL '); ----------------------------------------------------------------------- COMMIT TRAN; END TRY BEGIN CATCH ROLLBACK TRAN; DECLARE @ErrorMessage NVARCHAR(4000); SET @ErrorMessage = ERROR_MESSAGE(); RAISERROR(@ErrorMessage, 16, 1); RETURN; END CATCH; EXEC (N' SELECT * FROM [v3-2].UnicodeCharacterDatabase ucd WHERE ucd.[IsAlphabetic] = 1 OR ucd.[IsDecimal] = 1; '); -- 46,268 rows GO