Concating a prefix to each element in an array in Snowflake - snowflake-cloud-data-platform

I have a field in a Snowflake table which contains an array of strings (e.g. ["val1","val2","val3"]).
I want to write a query which returns the array with a prefix added to each of the elements (e.g. ["pre:val1","pre:val2","pre:val3"]).
Is there a way to achieve this?

This case is "open and close".
Open the array , add bit , close array.
select array_agg(concat('pre',f.value) ) from table(flatten(input=> parse_json( '["val1","val2","val3"] '))) f;

Related

How to save bucket names to a string and add new ones after that to an array

i have planner buckets (Tasks, in progress, Backlog) and I want to create a new Bucket depending on elements in a SharePoint list.
But I can't save the bucket names to an array and then add the missing value e.g. like "on hold" and the go trough the array again. It always set my array to blank again.
Maybe you can help me. Here is my PowerAutomate Flow so far:
You could use a couple of Select actions to create two arrays which you can use for the comparison. With a Filter Array you can find the ones which are missing. The output of that Filter Array can be used to loop through and create the missing buckets.
Below is an example of that approach.
1. In both Select actions the Map field is switched to text mode to only get Arrays with values (without keys)
2. In the Filter Array this is used in the From
body('Select_-_SharePoint_Items')
3. And this is the expression used in the advanced mode
#not(contains(body('Select_-_Existing_Buckets'), item()))

Find rows where text array contains value similar to input

I'm trying to get rows where a column of type text[] contains a value similar to some user input.
What I've thought and done so far is to use the 'ANY' and 'LIKE' operator like this:
select * from someTable where '%someInput%' LIKE ANY(someColum);
But it doesn't work. The query returns the same values as that this query:
select * from someTable where 'someInput' = ANY(someColum);
I've got good a result using the unnest() function in a subquery but I need to query this in WHERE clause if possible.
Why doesn't the LIKE operator work with the ANY operator and I don't get any errors? I thought that one reason should be that ANY operator is in the right-hand of query, but ...
Is there any solution to this without using unnest() and if it is possible in WHERE clause?
It's also important to understand that ANY is not an operator but an SQL construct that can only be used to the right of an operator. More:
How to use ANY instead of IN in a WHERE clause with Rails?
The LIKE operator - or more precisely: expression, that is rewritten with to the ~~ operator in Postgres internally - expects the value to the left and the pattern to the right. There is no COMMUTATOR for this operator (like there is for the simple equality operator =) so Postgres cannot flip operands around.
Your attempt:
select * from someTable where '%someInput%' LIKE ANY(someColum);
has flipped left and right operand so '%someInput%' is the value and elements of the array column someColum are taken to be patterns (which is not what you want).
It would have to be ANY(someColum) LIKE '%someInput%' - except that's not possible with the ANY construct which is only allowed to the right of an operator. You are hitting a road block here.
Related:
Is there a way to usefully index a text column containing regex patterns?
Can PostgreSQL index array columns?
You can normalize your relational design and save elements of the array in separate rows in a separate table. Barring that, unnest() is the solution, as you already found yourself. But while you are only interested in the existence of at least one matching element, an EXISTS subquery will be most efficient while avoiding duplicates in the result - Postgres can stop the search as soon as the first match is found:
SELECT *
FROM tbl
WHERE EXISTS (
SELECT -- can be empty
FROM unnest(someColum) elem
WHERE elem LIKE '%someInput%'
);
You may want to escape special character in someInput. See:
Escape function for regular expression or LIKE patterns
Careful with the negation (NOT LIKE ALL (...)) when NULL can be involved:
Check if NULL exists in Postgres array
An admittedly imperfect possibility might be to use ARRAY_TO_STRING, then use LIKE against the result. For example:
SELECT *
FROM someTable
WHERE ARRAY_TO_STRING(someColum, '||') LIKE '%someInput%';
This approach is potentially problematic, though, because someone could search over two array elements if they discover the joining character sequence. For example, an array of {'Hi','Mom'}, connected with || would return a result if the user had entered i||M in place of someInput. Instead, the expectation would probably be that there would be no result in that case since neither Hi nor Mom individually contain the i||M sequence of characters.
My question was marked duplicate and linked to a question out of context by a careless mod. This question comes closest to what I asked so I leave my answer here. (I think it may help people for who unnest() would be a solution)
In my case a combination of DISTINCT and unnest() was the solution:
SELECT DISTINCT ON (id_) *
FROM (
SELECT unnest(tags) tag, *
FROM someTable
) x
WHERE (tag like '%someInput%');
unnest(tags) expands the text array to a list of rows and DISTINCT ON (id_) removes the duplicates that result from the expansion, based on a unique id_ column.
Update
Another way to do this without DISTINCT within the WHERE clause would be:
SELECT *
FROM someTable
WHERE (
0 < (
SELECT COUNT(*)
FROM unnest(tags) AS tag
WHERE tag LIKE '%someInput%'
)
);
Please check this out.
This answer was exactly what I was looking for. It also provides for some useful tips (and examples) in case you need more flexibility.
It basically explains the ANY(), the #> and the && operators.
"If you want to search multiple values, you can use #> operator"
"#> means contains all the values in that array. If you want to search if the current array contains any values in another array, you can use &&"

What string value will sort after text when using ORDER BY on varchar field

I'm dealing with a table that includes a list of names (type VARCHAR). Some of the names in the list will be replaced with some text due to confidentiality reasons. For one of our reports, we're running the following query (names have been replaced to protect the innocent).
SELECT * from PeopleData
WHERE [location] = 'Somewhere'
Order By [name] ASC
I'm not looking for a new select statement, but a possible value for a [name] cell that will cause the row to be sorted to the bottom of the list when this query is performed. If I use an empty string, it sorts to the top of the list. If I use a space, it sorts to the top of the list. I've even tried using a | character, since it's ASCII value is higher than any text, and it still sorts to the top of the list.
EDIT: The other criteria is that it can't be terribly obvious that the names were removed, since this list data is public. That means no 'ZZZZZZZZZZZ', and no '** CONFIDENTIAL **' values. Looking for something that's not screaming "TOP SECRET".
Any suggestions?
You could use any value you like and add to your ORDER BY statement to force the ordering:
SELECT * from PeopleData
WHERE [location] = 'Somewhere'
ORDER BY CASE WHEN [name] = 'Protected Value' THEN 1 ELSE 0 END, Name
You could change the CASE statement to use some other criteria, like a Masked flag value rather than a specific set value if you wanted to randomize the masked names.
I was facing similar problem where I can control the text, but not the SQL Statement and I wanted to force a single entry to the end of this.
A bit kludgy, but I opted to prefix every in the list with hyphen ("-") EXCEPT the one I wanted at the end.
E.g.
- Apple
- Banana
- Carrot
A thing I wanted to be last

Select specific rows from a column in a MATLAB workspace into an array

I have a column filled with data in those rows and i would like to select the 1st row from that column but skipping the 2nd row and choosing the 3rd row after and insert them into an array.
Example of the row:
'153:154:155:156:157:158:159:160:161:162:163:164:165:166:167:168:169:170:171:172:173:174:175:176:177:178:179:180:181:182:183:184:185:186:187:188:189:190:191:192:193:194:195:196:197:198:199:200:201:202:203:204:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220:221:222:223:224:225:226:227:228:229:230:231:232:233:234:235:236:237:238:239:240:241:242:243:244:245:246:247:248:249:250:251:252:253:254:255:256:257:258:259:260:261:262:263:264:265:266:267:268:269:270:271:272:273:274:275:276:277:278:279:280:281:282'
'153:154:155:156:157:158:159:160:161:162:163:164:165:166:167:168:169:170:171:172:173:174:175:176:177:178:179:180:181:182:183:184:185:186:187:188:189:190:191:192:193:194:195:196:197:198:199:200:201:202:203:204:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220:221:222:223:224:225:226:227:228:229:230:231:232:233:234:235:236:237:238:239:240:241:242:243:244:245:246:247:248:249:250:251:252:253:254:255:256:257:258:259:260:261:262:263:264:265:266:267:268:269:270:271:272:273:274:275:276:277:278:279:280:281:282'
'30:31:32:33:34:35:36:37:38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:53:54:55:56:57:58:59:60:61:62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:83:84:85:86:87:88:89:90:91:92:93:94:95:96:97:98:99:100:101:102:103:104:105:106:107:108:109:110:111:112:113:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136:137:138:139:140:141:142:143:144:145:146:147:148:149:150:151:152:153:154:155:156:157:158:159:160:161:162:163:164:165:166:167:168:169:170:171:172:173:174:175:176:177:178:179:180:181:182:183:184:185:186:187:188:189:190:191:192:193:194:195:196:197:198:199:200:201:202:203:204:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220:221:222:223:224:225:226:227:228:229:230:231:232:233:234:235:236:237:238:239:240:241:242:243:244:245:246:247:248:249:250:251:252:253:254:255:256:257:258:259:260:261:262:263:264:265:266:267:268:269:270:271:272:273:274:275:276:277:278:279:280:281:282:283:284:285:286:287:288:289:290:291:292:293:294:295:296:297:298:299:300:301:302:303:304:305:306:307:308:309:310:311:312:313:314:315:316:317:318:319:320:321:322:323:324:325:326:327:328:329:330:331:332:333:334:335:336:337:338:339:340:341:342:343:344:345:346:347:348:349:350:351:352:353:354:355:356:357:358:359:360:361:362:363:364:365:366:367:368:369:370:371:372:373:374:375:376:377:378:379:380:381:382:383:384:385:386:387:388:389:390:391:392:393:394:395:396:397:398:399:400:401:402:403:404:405:406:407:408:409:410:411:412:413:414:415:416:417:418:419:420:421:422:423:424:425:426:427:428:429:430:431:432:433:434:435:436:437:438:439:440:441:442:443:444:445:446:447:448:449:450:451:452:453:454:455:456:457:458:459:460:461:462:463:464:465:466:467:468:469:470:471:472:473:474:475:476:477:478:479:480:481:482:483:484:485:486:487:488:489:490:491:492:493:494:495:496:497:498:499:500:501:502:503:504:505:506:507:508:509:510:511:512:513:514:515:516:517:518:519:520:521:522:523:524:525:526:527:528:529:530:531:532:533:534:535:536:537:538:539:540:541:542:543:544:545:546:547:548:549:550:551:552:553:554:555:556:557:558:559:560:561:562:563:564:565:566:567:568:569:570:571:572:573:574:575:576:577:578:579:580:581:582:583:584:585:586:587:588:589:590:591:592:593:594:595:596:597:598:599:600:601:602:603:604:605:606:607:608:609:610:611:612:613:614:615:616:617:618:619:620:621:622:623:624:625:626:627:628:629:630:631:632:633:634:635:636:637:638:639:640:641:642:643:644:645:646:647:648:649:650:651:652:653:654:655:656:657:658:659:660:661:662:670:671:672:673:674:675:676:677:678:679:680:681:682:683:684:685:686:687:688:689:690:691:692:693:694:695:696:697:698:699:700:701:702:703:704:705:706:707:708:709:710:711:712:713:714:715:716:717:718:719:720:721:722:723:724:725:726:727:728:729:730:731:732:733:734:735:736:737:738:739:740:741:742:750:751:752:753:754:755:756:757:758:759:760:761:762:763:764:765:766:767:768:769:770:771:772:773:774:775:776:777:778:779:780:781:782:783:784:785:786:787:788:789:790:791:792:793:794:795:796:797:798:799:800:801:802:803:804:805:806:807:808:809:810:811:812:813:814:815:816:817:818:819:820:821:822:823:824:825:826:827:828:829:830:831:832:833:834:835:836:837:838:839:840:841:842:843:844:845:846:847:848:849:850:851:852:853:854:855:856:857:858:859:860:861:862:863:864:865:866:867:868:869:870:871:872:873:874:875:876:877:878:879:880:881:882:883:884:885:886:887:888:889:890:891:892:893:894:895:896:897:898:899:900:901:902:903:904:905:906:907:908:909:910:911:912:913:914:915:916:917:918:919:920:921:922:923:924:925:926:927:928:929:930:931:932:933:934:935:936:937:938:939:940:941:942:943:944:945:946:947:948:949:950:951:952:953:954:955:956:957:958:959:960:961:962:963:964:965:966:967:968:969:970:971:972:973:974:975:976:977:978:979:980:981:982:983:984:985:986:987:988:989:990:991:992:993:994:995:996:997:998:999:1000:1001:1002:1003:1004:1005:1006:1007:1008:1009:1010:1011:1012:1013:1014:1015:1016:1017:1018:1019:1020:1021:1022:1023:1024:1025:1026:1027:1028:1029:1030:1031:1032:1033:1034:1035:1036:1037:1038:1039:1040:1041:1042:1043:1044:1045:1046:1047:1048:1049:1050:1051:1052:1053:1054:1055:1056:1057:1058:1059:1060:1061:1062:1063:1064:1065:1066:1067:1068:1069:1070:1071:1072:1073:1074:1075:1076:1077:1078:1079:1080:1081:1082:1083:1084:1085:1086:1087:1088:1089:1090:1091:1092:1093:1094:1095:1096:1097:1098:1099:1100:1101:1102:1103:1104:1105:1106:1107:1108:1109:1110:1111:1112:1113:1114:1115:1116:1117:1118:1119:1120:1121:1122:1123:1124:1125:1126:1127:1128:1129:1130:1131:1132:1133:1134:1135:1136:1137:1138:1139:1140:1141:1142:1143:1144:1145:1146:1147:1148:1149:1150:1151:1152:1153:1154:1155:1156:1157:1158:1159:1160:1161:1162:1163:1164:1165:1166:1167:1168:1169:1170:1171:1172:1173:1174:1175:1176:1177:1178:1179:1180:1181:1182:1183:1184:1185:1186:1187:1188:1189:1190:1191:1192:1193:1194:1195:1196:1197:1198:1199:1200:1201:1202:1203:1204:1205:1206:1207:1208:1209:1210:1211:1212:1213:1214:1215:1216:1217:1218:1219:1220:1221:1222:1223:1224:1225:1226:1227:1228:1229:1230:1231:1232:1233:1234:1235:1236:1237:1238:1239:1240:1241:1242:1243:1244:1245:1246:1247:1248:1249:1250:1251:1252:1253:1254:1255:1256:1257:1258:1259:1260:1261:1262:1263:1264:1265:1266:1267:1268:1269:1270:1271:1272:1273:1274:1275:1276:1277:1278:1279:1280:1281:1282:1283:1284:1285:1286:1287:1288:1289:1290:1291:1292:1293:1294:1295:1296:1297:1298:1299:1300:1301:1302:1303:1304:1305:1306:1307:1308:1309:1310:1311:1312:1313:1314:1315:1316:1317:1318:1319:1320:1321:1322:1323:1324:1325:1326:1327:1328:1329:1330:1331:1332:1333:1334:1335:1336:1337:1338:1339:1340:1341:1342:1343:1344:1345:1346:1347:1348:1349:1350:1351:1352:1353:1354:1355:1356:1357:1358:1359:1360:1361:1362:1363:1364:1365:1366:1367:1368:1369:1370:1371:1372:1373:1374:1375:1376:1377:1378:1379:1380:1381:1382:1383:1384:1385:1386:1387:1388:1389:1390:1391:1392:1393:1394:1395:1396:1397:1398:1399:1400:1401:1402:1403:1404:1405:1406:1407:1408:1409:1410:1411:1412:1413:1414:1415:1416:1417:1418:1419:1420:1421:1422:1423:1424:1425:1426:1427:1428:1429:1430:1431:1432:1433:1434:1435:1436:1437:1438:1439:1440:1441:1442:1443:1444:1445:1446:1447:1448:1449:1450:1451:1452:1453:1454:1455:1456:1457:1458:1459:1460:1461:1462:1463:1464:1465:1466:1467:1468:1469:1470:1471:1472:1473:1474:1475:1476:1477:1478:1479:1480:1481:1482:1483:1484:1485:1486:1487:1488:1489:1490:1491:1492:1493:1494:1495:1496:1497:1498:1499:1500:1501:1502:1503:1504:1505:1506:1507:1508:1509:1510:1511:1512:1513:1514:1515:1516:1517:1526:1527:1528:1529:1530:1531:1532:1533:1534:1535:1536:1537:1538:1539:1540:1541:1542:1543:1544:1545:1546:1547:1548:1549:1550:1551:1552:1553:1554:1555:1556:1557:1558:1559:1560:1561:1562:1563:1564:1565:1566:1567:1568:1569:1570:1571:1572:1573:1574:1575:1576:1577:1578:1579:1580:1581:1582:1583:1584:1585:1586:1587:1588:1589:1590:1591:1592:1593:1594:1595:1596:1597:1598:1599:1600:1601:1602:1603:1604:1605:1606:1607:1608:1609:1610:1611:1612:1613:1614:1615:1616:1617:1618:1619:1620:1621:1622:1623:1624:1625:1626:1627:1628:1629:1630:1631:1632:1633:1634:1635:1636:1637:1638:1639:1640:1641:1642:1643:1644:1645:1646:1647:1648:1649:1650:1651:1652:1653:1654:1655:1656:1657:1658:1659:1660:1661'
'30:31:32:33:34:35:36:37:38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:53:54:55:56:57:58:59:60:61:62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:83:84:85:86:87:88:89:90:91:92:93:94:95:96:97:98:99:100:101:102:103:104:105:106:107:108:109:110:111:112:113:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136:137:138:139:140:141:142:143:144:145:146:147:148:149:150:151:152:153:154:155:156:157:158:159:160:161:162:163:164:165:166:167:168:169:170:171:172:173:174:175:176:177:178:179:180:181:182:183:184:185:186:187:188:189:190:191:192:193:194:195:196:197:198:199:200:201:202:203:204:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220:221:222:223:224:225:226:227:228:229:230:231:232:233:234:235:236:237:238:239:240:241:242:243:244:245:246:247:248:249:250:251:252:253:254:255:256:257:258:259:260:261:262:263:264:265:266:267:268:269:270:271:272:273:274:275:276:277:278:279:280:281:282:283:284:285:286:287:288:289:290:291:292:293:294:295:296:297:298:299:300:301:302:303:304:305:306:307:308:309:310:311:312:313:314:315:316:317:318:319:320:321:322:323:324:325:326:327:328:329:330:331:332:333:334:335:336:337:338:339:340:341:342:343:344:345:346:347:348:349:350:351:352:353:354:355:356:357:358:359:360:361:362:363:364:365:366:367:368:369:370:371:372:373:374:375:376:377:378:379:380:381:382:383:384:385:386:387:388:389:390:391:392:393:394:395:396:397:398:399:400:401:402:403:404:405:406:407:408:409:410:411:412:413:414:415:416:417:418:419:420:421:422:423:424:425:426:427:428:429:430:431:432:433:434:435:436:437:438:439:440:441:442:443:444:445:446:447:448:449:450:451:452:453:454:455:456:457:458:459:460:461:462:463:464:465:466:467:468:469:470:471:472:473:474:475:476:477:478:479:480:481:482:483:484:485:486:487:488:489:490:491:492:493:494:495:496:497:498:499:500:501:502:503:504:505:506:507:508:509:510:511:512:513:514:515:516:517:518:519:520:521:522:523:524:525:526:527:528:529:530:531:532:533:534:535:536:537:538:539:540:541:542:543:544:545:546:547:548:549:550:551:552:553:554:555:556:557:558:559:560:561:562:563:564:565:566:567:568:569:570:571:572:573:574:575:576:577:578:579:580:581:582:583:584:585:586:587:588:589:590:591:592:593:594:595:596:597:598:599:600:601:602:603:604:605:606:607:608:609:610:611:612:613:614:615:616:617:618:619:620:621:622:623:624:625:626:627:628:629:630:631:632:633:634:635:636:637:638:639:640:641:642:643:644:645:646:647:648:649:650:651:652:653:654:655:656:657:658:659:660:661:662:670:671:672:673:674:675:676:677:678:679:680:681:682:683:684:685:686:687:688:689:690:691:692:693:694:695:696:697:698:699:700:701:702:703:704:705:706:707:708:709:710:711:712:713:714:715:716:717:718:719:720:721:722:723:724:725:726:727:728:729:730:731:732:733:734:735:736:737:738:739:740:741:742:750:751:752:753:754:755:756:757:758:759:760:761:762:763:764:765:766:767:768:769:770:771:772:773:774:775:776:777:778:779:780:781:782:783:784:785:786:787:788:789:790:791:792:793:794:795:796:797:798:799:800:801:802:803:804:805:806:807:808:809:810:811:812:813:814:815:816:817:818:819:820:821:822:823:824:825:826:827:828:829:830:831:832:833:834:835:836:837:838:839:840:841:842:843:844:845:846:847:848:849:850:851:852:853:854:855:856:857:858:859:860:861:862:863:864:865:866:867:868:869:870:871:872:873:874:875:876:877:878:879:880:881:882:883:884:885:886:887:888:889:890:891:892:893:894:895:896:897:898:899:900:901:902:903:904:905:906:907:908:909:910:911:912:913:914:915:916:917:918:919:920:921:922:923:924:925:926:927:928:929:930:931:932:933:934:935:936:937:938:939:940:941:942:943:944:945:946:947:948:949:950:951:952:953:954:955:956:957:958:959:960:961:962:963:964:965:966:967:968:969:970:971:972:973:974:975:976:977:978:979:980:981:982:983:984:985:986:987:988:989:990:991:992:993:994:995:996:997:998:999:1000:1001:1002:1003:1004:1005:1006:1007:1008:1009:1010:1011:1012:1013:1014:1015:1016:1017:1018:1019:1020:1021:1022:1023:1024:1025:1026:1027:1028:1029:1030:1031:1032:1033:1034:1035:1036:1037:1038:1039:1040:1041:1042:1043:1044:1045:1046:1047:1048:1049:1050:1051:1052:1053:1054:1055:1056:1057:1058:1059:1060:1061:1062:1063:1064:1065:1066:1067:1068:1069:1070:1071:1072:1073:1074:1075:1076:1077:1078:1079:1080:1081:1082:1083:1084:1085:1086:1087:1088:1089:1090:1091:1092:1093:1094:1095:1096:1097:1098:1099:1100:1101:1102:1103:1104:1105:1106:1107:1108:1109:1110:1111:1112:1113:1114:1115:1116:1117:1118:1119:1120:1121:1122:1123:1124:1125:1126:1127:1128:1129:1130:1131:1132:1133:1134:1135:1136:1137:1138:1139:1140:1141:1142:1143:1144:1145:1146:1147:1148:1149:1150:1151:1152:1153:1154:1155:1156:1157:1158:1159:1160:1161:1162:1163:1164:1165:1166:1167:1168:1169:1170:1171:1172:1173:1174:1175:1176:1177:1178:1179:1180:1181:1182:1183:1184:1185:1186:1187:1188:1189:1190:1191:1192:1193:1194:1195:1196:1197:1198:1199:1200:1201:1202:1203:1204:1205:1206:1207:1208:1209:1210:1211:1212:1213:1214:1215:1216:1217:1218:1219:1220:1221:1222:1223:1224:1225:1226:1227:1228:1229:1230:1231:1232:1233:1234:1235:1236:1237:1238:1239:1240:1241:1242:1243:1244:1245:1246:1247:1248:1249:1250:1251:1252:1253:1254:1255:1256:1257:1258:1259:1260:1261:1262:1263:1264:1265:1266:1267:1268:1269:1270:1271:1272:1273:1274:1275:1276:1277:1278:1279:1280:1281:1282:1283:1284:1285:1286:1287:1288:1289:1290:1291:1292:1293:1294:1295:1296:1297:1298:1299:1300:1301:1302:1303:1304:1305:1306:1307:1308:1309:1310:1311:1312:1313:1314:1315:1316:1317:1318:1319:1320:1321:1322:1323:1324:1325:1326:1327:1328:1329:1330:1331:1332:1333:1334:1335:1336:1337:1338:1339:1340:1341:1342:1343:1344:1345:1346:1347:1348:1349:1350:1351:1352:1353:1354:1355:1356:1357:1358:1359:1360:1361:1362:1363:1364:1365:1366:1367:1368:1369:1370:1371:1372:1373:1374:1375:1376:1377:1378:1379:1380:1381:1382:1383:1384:1385:1386:1387:1388:1389:1390:1391:1392:1393:1394:1395:1396:1397:1398:1399:1400:1401:1402:1403:1404:1405:1406:1407:1408:1409:1410:1411:1412:1413:1414:1415:1416:1417:1418:1419:1420:1421:1422:1423:1424:1425:1426:1427:1428:1429:1430:1431:1432:1433:1434:1435:1436:1437:1438:1439:1440:1441:1442:1443:1444:1445:1446:1447:1448:1449:1450:1451:1452:1453:1454:1455:1456:1457:1458:1459:1460:1461:1462:1463:1464:1465:1466:1467:1468:1469:1470:1471:1472:1473:1474:1475:1476:1477:1478:1479:1480:1481:1482:1483:1484:1485:1486:1487:1488:1489:1490:1491:1492:1493:1494:1495:1496:1497:1498:1499:1500:1501:1502:1503:1504:1505:1506:1507:1508:1509:1510:1511:1512:1513:1514:1515:1516:1517:1526:1527:1528:1529:1530:1531:1532:1533:1534:1535:1536:1537:1538:1539:1540:1541:1542:1543:1544:1545:1546:1547:1548:1549:1550:1551:1552:1553:1554:1555:1556:1557:1558:1559:1560:1561:1562:1563:1564:1565:1566:1567:1568:1569:1570:1571:1572:1573:1574:1575:1576:1577:1578:1579:1580:1581:1582:1583:1584:1585:1586:1587:1588:1589:1590:1591:1592:1593:1594:1595:1596:1597:1598:1599:1600:1601:1602:1603:1604:1605:1606:1607:1608:1609:1610:1611:1612:1613:1614:1615:1616:1617:1618:1619:1620:1621:1622:1623:1624:1625:1626:1627:1628:1629:1630:1631:1632:1633:1634:1635:1636:1637:1638:1639:1640:1641:1642:1643:1644:1645:1646:1647:1648:1649:1650:1651:1652:1653:1654:1655:1656:1657:1658:1659:1660:1661'
'2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:25:26:27:28:29:30:31:32:33:34:35:36:37:38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:53:54:55:56:57:58:59:60:61:62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:83:84:85:86:87:88:89:90:91:92:93:94:95:96:97:98:99:100:101:102:103:104:105:106:107:108:109:110:111:112:113:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136'
'1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:25:26:27:28:29:30:31:32:33:34:35:36:37:38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:53:54:55:56:57:58:59:60:61:62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:83:84:85:86:87:88:89:90:91:92:93:94:95:96:97:98:99:100:101:102:103:104:105:106:107:108:109:110:111:112:113:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136:137:138:139:140:141'
'1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:25:26:27:28:29:30:31:32:33:34:35:36:37:38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:52A:53:54:55:56:57:58:59:60:61:62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:82A:82B:82C:83:84:85:86:87:88:89:90:91:92:93:94:95:96:97:98:99:100:100A:100B:100C:101:102:103:104:105:106:107:108:109:110:111:112:113:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:133:134:135:136:137:138:139:140:141:142:143:144:145:146:147:148:149:150:151:152:153:154:156:157:162:163:164:165:166:167:168:169:171:172:173:174:175:176:177:178:179:180:182:183:184:185:186:187:188:189:190:191:192:193:194:195:196:197:198:199:200:203:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220:221:222:225:226:227'
'1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23:24:25:26:27:28:29:30:31:32:33:34:35:36:37:38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:52A:53:54:55:56:57:58:59:60:61:62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:82A:82B:82C:83:84:85:86:87:88:89:90:91:92:93:94:95:96:97:98:99:100:100A:100B:100C:101:102:103:104:105:106:107:108:109:110:111:112:113:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:133:134:135:136:137:138:139:140:141:142:143:144:145:146:147:148:149:150:151:152:153:154:156:157:162:163:164:165:166:167:168:169:171:172:173:174:175:176:177:178:179:180:182:183:184:185:186:187:188:189:190:191:192:193:194:195:196:197:198:199:200:203:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220:221:222:225:226:227'
'1:2:3:4:5:6:7:8:9:13:14:15:16:17:18:19:20:21:22:23:24:25:26:27:28:29:30:31:32:33:34:35:36:37:38:39:40:41:42:43:44:45:46:47:48:49:50:51:52:53:54:55:56:57:58:59:60:61:62:63:64:65:66:67:68:69:70:71:72:73:74:75:76:77:78:79:80:81:82:83:84:85:86:87:88:89:90:91:92:93:94:95:96:97:98:99:100:101:102:103:104:105:106:107:108:109:110:111:112:113:114:115:116:117:118:119:120:121:122:123:124:125:126:127:128:129:130:131:132:133:134:135:136:137:138:139:140:141:142:143:144:145:146:147:148:149:150:151:152:153:154:155:156:157:158:159:160:161:162:163:164:165:166:167:168:169:170:171:172:173:174:175:176:177:178:179:180:181:182:183:184:185:186:187:188:189:190:191:192:193:194:195:196:197:198:199:200:201:202:203:204:205:206:207:208:209:210:211:212:213:214:215:216:217:218:219:220:221:222:223:224:225:226:227:228:229:230:231:232:233:234:235:236:237:238:239:240:241:242:243:244:245:246:247:248:249:250:251:252:253:254:255:256:257:258:259:260:261:262:263:264:265:266:267:268:269:270:271:272:273:274:275:276:277:278:279:280:281:282:283:284:285:286:287:288:289:290:291:292:293:294:295:296:297:298:299:300:301:302:303:304:305:306:307:308:309:310:311:312:313:314:315:316:317:318:319:320:321:322:323'
Basically, i would want to select the first row, which is 153....282 and then select the 3rd row which is 30...1661 and repeat this process for all other rows accordingly. From there i would like to then insert those data into an array.
The source of these data are from a PostgreSQL database which i have imported into my workspace.
Is this possible to do?
If I understand correctly, this should work:
output = data([1 3],:);
This selects the 1st and 3rd rows of data, and adds them to a new variable called output. To select every odd row, use the colon notation and the end keyword, like this:
output = data(1:2:end, :);
This starts at the first row selects every 2nd row until the end.
One solution would be to dump it all to a text file and then use importdata() which will allow you to specify the delimiter character, as in data = importdata(file.txt,':'). This will give you a MATLAB array data full of numbers, which you can then process as you please.
Let's assume that after you import your data, it is a cell array of strings, called A (this is what it appears to be in your question, because of the single quotes on each line).
First, let's get rid of the the letters appearing in the data, since we probably want just the numbers. We do this with a regular expression replacement:
A = cellfun(#(x) regexprep(x, '[^\d:]', ''), A,'UniformOutput',0);
Next, we use the strread function to parse each line into an array of integers
B = cellfun(#(x) strread(x, '%d:', -1), A, 'UniformOutput',0);
Now each element of B is the array form of the corresponding element of A. So you can get the 3rd row, for example with
B{3}

Is there any way to put an invisible character at beginning of a string to change its sort order?

Is there any way to put a non printing or non obtrusive character at the beginning of a string of data in sqlserver. so that when an order by is performed, the string is sorted after the letter z alphabetically?
I have used a space at the beginning of the string to get the string at the top of the sorted list, but I am looking to do something similar to put a string at the end of the list.
I would rather not put another field such as "SortOrder" in the table to use to order the sort, and I would rather not have to sort the list in my code.
Added: Yes I know this is a bad idea, thanks to all for mentioning it, but still, I am curious if what I am asking can be done
Since no one is venturing to answer your question properly, here's my answer
Given: You are already adding <space> to some other data to make them appear top
Solution: Add CHAR(160) to make it appear at the bottom. This is in reality also a space, but is designed for computer systems to not treat it as a word break (hence the name).
http://en.wikipedia.org/wiki/Non-breaking_space
Your requirements:
Without adding another field such as "SortOrder" to the table
Without sorting the list in your code
I think this fits!
create table my(id int,data varchar(100))
insert my
select 1,'Banana' union all
select 2,Char(160) + 'mustappearlast' union all
select 3,' ' +N'mustappearfirst' union all
select 4,'apple' union all
select 5,'pear'
select *
from my
order by ASCII(lower(data)), data
(ok I cheated, I had to add ASCII(lower( but this is closest to your requirements than all the other answers so far)
You should use another column in the database to help specify the ordering rather than modifying the string:
SELECT *
FROM yourtable
ORDER BY sortorder, yourstring
Where you data might look like this:
yourstring sortorder
foo 0
bar 0
baz 1
qux 1
quux 2
If you can't modify the table you might be able to put the sortorder column into a different table and join to get it:
SELECT *
FROM yourtable AS T1
JOIN yourtablesorting AS T2
ON T1.id = T2.T1_id
ORDER BY T2.sortorder, T1.yourstring
Alternative solution:
If you really can't modify the database at all, not even adding a new table then you could add any character you like at the start of the string and remove it during the select:
SELECT RIGHT(yourstring, LEN(yourstring) - 1)
FROM yourtable
ORDER BY yourstring
Could you you include something like:
"<SORT1>This is my string"
"<SORT2>I'd like this to go second"
And remove them later? I think using invisible characters is fragile and hacky.
You could put a sort order in the query and use unions (no guarantees on performance).
select 1 as SortOrder, *
from table
where ... --first tier
union
select 2, *
from table
where ... --second tier
order by SortOrder
In my opinion, an invisible character for this purpose is a bad idea because it pollutes the data. I would do exactly what you would rather not do and add a new column.
To modify the idea slightly, you could implement it not as a sort order, but a grouping order, defaults to 0, where a negative integer puts the group at top of the list and a positve integer at the bottom, and then "order by sort_priority, foo"
I'm with everyone else that the ideal way to do this is by adding an additional column for sort order.
But if you don't want to add another column, and you already use a space for those items you want to appear at the top of the list, how do you feel about using a pipe (|) for items at the bottom of the list?
By default, SQL Server uses a Unicode character set for its sorting. In Unicode, the pipe and both curly brackets ({, }) come after z, so any of those three characters should work for you.

Resources